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プロパティ部分の置き換え作業の目的についても、後編の記事にて説明します。

※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。