次の処理のマクロを編集しよう
セルD3へのデータ入力部分を見てみましょう。このステートメントは、セルC3を選択した後のステートメントだったので、行頭の「ActiveCell」はセルC3を参照していました。したがって、Offsetプロパティには、セルD3への相対的な位置を表す「0行下1列右」が記述されています。
しかし、先ほどステートメントを1行にまとめたときに、セルC3を選択する処理部分を削除しました。したがって、ActiveCellはセルA3を参照していることになるので、このままだと、「ActiveCell.Offset(0,1)」はセルB3を参照することになってしまいます。
そこで、セルA3からセルD3を参照するように、Offsetプロパティの引数の値を修正します。また、1行目と同じように、2行目と3行目をつなぎます。
最後の行は、データ入力後のアクティブセルの移動によるセル選択処理です。この行も特に必要ないので削除します。そして、Withステートメントを使用して、よりシンプルなステートメントに修正します。
もう1つの編集方法
Offsetプロパティで参照した先のセル範囲で、左上端のセルが「Range("A1")」で参照されていることは既に解説しました。このRangeプロパティを使用して、今回のマクロを修正することもできます。
その場合、セルA3から0行下2列右にあるセルC3をOffsetプロパティで参照し、その先で、セルC3を「セルA1」、セルD3を「セルB1」として参照する形が考えられます。
したがって、マクロは下図のようにも修正できます。
編集結果のシンプルなマクロを見ると、「書いた方が早い」と感じるかもしれません。慣れてきたら、最初からこのプロシージャを作成しても良いでしょう。しかし、マクロを読解して編集する中で、VBAの知識の復習になった部分もあったと思います。忘れてしまったキーワードを調べたり、プロシージャの記述方法の参考にしたりすることもできるので、マクロ記録→読解→編集によるプロシージャの作成もトレーニングしておくと良いでしょう。