VBAオジサンのらくがき帳

#05 ワークシート上でコピペなどの作業をおこなう

2020-09-13 00:00:00

ワークシート上でセルのコピー&ペーストもよくつかう機能の1つではないでしょうか。そのような処理をおこなうマクロもRangeオブジェクトを使用して作ることができます。

例えば下のように

Range("A1").Copy Range("A2")

また、別の書き方では下のように

Range("A1").Copy
Range("A2").PasteSpecial xlPasteAll

別のシートに対してコピーするときには、コピー先のRangeに対しシートの指定が必要です。またPasteSpecialのあとにxlPasteValuesを指定すると値のコピーすることもできます。

Range("A1").Copy Sheets("Sheet2").Range("A1")
Range("A1").Copy
Range("A1").PasteSpecial xlPasteValues '値コピー

ValueやFormulaのように、オブジェクトの属性を表すものがプロパティでした。上記のCopyやPasteSpecialは同じように「.」でつなげられていますが、Rangeオブジェクトの属性ではなく、Rangeオブジェクトに対する操作を表しています。このようにオブジェクトに対する操作をおこなうものをメソッドといいます。シート上での操作をおこなうマクロはRangeやその他のオブジェクトのメソッドを利用して作ることができます。

メソッド名のあとには続けて引数を記述して、操作に対して追加の情報を指定することができます。引数には省略可能なものとそうでないものがあります。同じような操作でも、サンプルの1番目のようにコピー先を引数に指定して、1つの式でコピー&ペーストを完了することもできますし、2番目のサンプルのようにコピーとペーストを別のメソッドを使っておこなうことも可能です

Rangeオブジェクトのよく使うメソッドには以下のようなものがあります

Rangeオブジェクトに他にどようなプロパティやメソッドがあるかはなどは、下のマイクロソフトのリファレンスを見ると詳しくわかります。https://docs.microsoft.com/ja-jp/office/vba/api/excel.range(object)