Excel VBAの使い方/マクロ・VBA

エクセルのマクロ編集(編集の重要ポイント)(3ページ目)

この記事では、読み解いたVBAプログラムを無駄のない形に編集するテクニックを詳しく紹介しています。この編集作業によって、VBAプログラムの世界がだんだん見えてくるはずです。

緑川 吉行

執筆者:緑川 吉行

エクセル(Excel)の使い方ガイド


Selectionプロパティを置き換えよう

作成されたプロシージャの3~4行目をご覧下さい。3行目の「Select」は、セルを表すRangeオブジェクトを選択するメソッド。したがって、メソッドの基本構文なので「セルB2を選択する」と読み解きます。4行目の「Selection」は、選択されているオブジェクトを返すプロパティ、「Copy」はRangeオブジェクトをコピーするメソッドです。したがって、「選択されているセルB2をコピーする」と読み解きます。


このSelectメソッドとSelectionプロパティ。Selectメソッドで選択したオブジェクトをSelectionプロパティで参照する、という流れになっていますが、ちょっとムダがありますね。「Selection」は「Range("B2")」を指しているので、Selectionプロパティ部分をオブジェクト(「Range("B2")」)に置き換えてスッキリさせます。


同様に6行目の「Range("Z2").Select」は「セルZ2を選択する」と読み解けます。そして、このステートメント以降にSelectメソッドがないので、この後に記述されているSelectionプロパティは、すべて「Range("Z2")」に置き換えます。


そして、Selectionプロパティを置き換えたことにより、Selectメソッドでオブジェクトを選択しているステートメント(ここでは、3行目と6行目)はムダになるので削除します。


なお、これらの編集は、慣れてくると「.Select」と「Selection」を削除する、という見方で編集できます。


また、今回の場合、1~2行目のSelectメソッドと「ActiveCell」プロパティも同様に編集できます。ActiveCellプロパティは現在アクティブなセルを返すプロパティです。ここでは選択されているセルB2がアクティブなセル、つまり「ActiveCell」は「Range(B2")」を指していることになるので、ここでは、ActiveCellプロパティを「Range(B2")」に置き換えて、1行目のステートメントを削除します。


FormulaR1C1プロパティについて

セルにデータを入力する場合は、通常、Rangeオブジェクトの「Value」プロパティを使用します。しかし、セルにデータを入力する操作をマクロで記録すると、1行目に記述されているように「FormulaR1C1」プロパティで記述されます。このプロパティは、本来、セルに数式を「R1C1形式」で入力する場合に使用する場合に使うのですが、マクロ記録では、何故かこのプロパティが記述されます。
ここでは、データ入力時はValueプロパティを使用する形に統一したいので、FormulaR1C1プロパティをValueプロパティに書き換えます。
※R1C1形式については別記事にて詳しく紹介します。


今回の編集はここまで

前編の編集作業はここまでとします。後編の「エクセルのマクロ編集(With文の編集ポイント)」では、この続きとして、Withステートメント部分を整理したり、その他の不要な部分を削除したりすることで、よりスッキリした形に編集します。また、今回のSelectionプロパティ部分の置き換え作業の目的についても、後編の記事にて説明します。
【編集部おすすめの購入サイト】
楽天市場で Excel 関連の商品を見るAmazon で Excel 関連の商品を見る
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます