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形式については別記事にて詳しく紹介します。 |