
VBA上でセル情報をコピーするにはCopyメソッドを使います。
通常のワークシート上でもコピーする場合は多いため、VBA上でも当然使用頻度は高く初歩的なコードといえますね。
Copyメソッドの基本構文
Rangeオブジェクト.Copy(Destination)
Rangeオブジェクト
Copyメソッドを指定するRangeオブジェクトを指定します。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
Rangeオブジェクトを参照するためのRangeプロパティに関しては下記記事をご参照ください。
【Excel VBA】単一セルやセル範囲を参照するRangeプロパティまとめ | Excelを制する者は人生を制す ~No Excel No Life~
引数Destination
コピーした情報の貼り付け先を指定できる引数です。
この引数は省略可能です。
省略した場合はコピーした情報はクリップボードに格納されます。
(クリップボードに格納された情報を貼り付けたい場合は別途PasteメソッドやPasteSpecialメソッドのコードを記述する必要があります)
使用例
今回は下記のようにB3:B7の範囲にあるセル情報をD3:D7の範囲に貼り付けるとします。
この中でB4セルの情報をD4セルへ貼り付ける場合は以下のコードになります。
1 2 3 |
Sub コピー() Range("B4").Copy Destination:=Range("D4") End Sub |
コピーしたいセルを最初にRangeプロパティで指定し、そのあとにCopyメソッドを記述。(貼り付けする必要がない場合はここで終了)
そのあとに引数「Destination」として”Destination:=”に貼り付けしたいセルを記述で完了です。
マクロの動作イメージ
Copyメソッドで指定しているB4セルがD4セルへ貼り付けされました。
コピーされるのは値だけでなく、罫線も貼り付けされています。
B4セルが文字の色や塗りつぶしの色などのほかの設定がされている場合は、貼付け先にも適用されます。
【参考】複数セルをコピー→貼り付け先を単一セルの場合
1 2 3 |
Sub コピー例①() Range("B3:B7").Copy Destination:=Range("D3") End Sub |
複数のセル範囲をコピーし、引数「Destination」で単一セルを指定した場合、そのセルがコピーした範囲の左上端となります。
今回はB3:B7のコピー情報が貼り付け先のD3セルを起点に貼り付けされるため、結果D3:D7セルにB3:B7の情報が貼り付けされることになります。
【参考】単一セルをコピー→貼り付け先を複数セルの場合
1 2 3 |
Sub コピー例②() Range("B3").Copy Destination:=Range("D3:D7") End Sub |
単一セルをコピーし、引数「Destination」で複数のセル範囲を指定した場合、同一情報が複数のセルへ貼り付けされます。
今回はB3セルのコピー情報が貼り付け先のD3:D7のそれぞれのセルへ貼り付けされることになります。
まとめ
Copyメソッドは表全体などの値以外の情報もすべてコピーしたい場合やいったんクリップボードにコピー情報を格納したい場合に有効です。
状況に応じて代入演算子などと使い分けを行い、なるべくコードが短くなるように工夫すると、VBAのコードがすっきりとわかりやすくなります。
ご参考になれば幸いです(*^^*)