1行でコピーをする方法
コピーは通常の動作では次の動作が一般的です。
①セルをコピーする
②貼り付けたいセルを選択する
③貼り付ける
通常の動作をマクロ化したい、ということであれば、単純に上記を1行ずつコード化していけばいいですが、VBAコードを理解していくのであれば、次のようなシンプルなコードの理解も進めていくことをおお勧めします。
Copyメソッドの活用
A2をコピーしてA3に貼り付ける、というコードについては、次のようになります。
Cells(2,1).Copy Destination:=Cells(3,1)
「Copy」はコピーする、その後にある「Destination」は英語で「行き先」という意味があり、コピーしたものを「どこに」貼り付けるのか?を指定することができます。
そのため、この1行でコピーから貼り付けまでを完結することができます。
このDestinationの部分は引数(ひきすう)と呼ばれ、メソッドを補足する役割があります。
今回の場合には「コピーした後にする動作」、つまり「貼り付ける先」をどこにするかを追加情報として指定する役割を果たしているわけです。
引数の省略
引数については表示を省略することができるので、次のように書くこともできます。
Cells(2,1).Copy Cells(3,1)
ただし、これだけ見たときに何の作業をしているか分かりづらくないでしょうか?
VBAのコードを知っている方であれば、これがDestination(行き先)を省略していると分かりますが、他の方が見たときに何を表しているかわからない可能性があります。
そのため、私がマクロを作るときには他の方がメンテナンスをすることも考えて、省略しても分かりやすいものは省略する、分かりづらくなりそうなものは正確に書くようにしています。
まとめ
今回は、3つの方法でお伝えしましたが一番短いのは③の方法でした。
①通常の動作と同じようにコードを書く
②引数を書いた上で1行で書く
③引数を省略する
ただ、③だと何をしているか見た目上、分かりづらくなるというデメリットがあります。
そのため私としては②が一番オススメです。
後から見直しても分かりやすいVBAコードの書き方を覚えていきましょう。
コメント