こちらの記事で、コピー、カット(切り取り)したデータをペースト(貼り付け)する方法について確認します。
コピーの方法についてはこちらをご覧ください。
ペースト(貼り付け)
書式
オブジェクト.Paste(Destination,Link)
Copy,Cutメソッドでクリップボードに保管したデータを指定した場所に貼り付けます。
Copy,Cutメソッドを実行したときに引数を指定しなかった時に使います。
Destinationは引数で、ここにセルを指定することで指定した位置に貼り付けを行います。
Destinationで引数を指定しない場合は、現在の選択範囲に貼り付けを行います。
Destinationで引数を指定してペースト
1 2 3 4 |
Sub Test() Range("A1").CurrentRegion.Copy 'A1のセルが含まれる範囲全体をコピー ActiveSheet.Paste Destination:=Range("I1") 'アクティブシートのI1を指定して貼り付け End Sub |
3行目で、引数DestinationにセルI1を指定することでPasteを実行しています。
実行結果はこちらです。
緑色セルの左側にあるコピー元の内容を、緑色セルの右側に貼り付けしています。
Link:=Trueにしてペースト
1 2 3 4 5 |
Sub Test() Range("A1").CurrentRegion.Copy Range("I1").Activate ActiveSheet.Paste Link:=True End Sub |
Link:=Trueにすると、コピー元の値が変化した場合にコピー先の値も変化します。
リンク貼り付けを行う場合は、Destinationで引数を指定することはできないため、
先に貼り付け先のセルを指定しておく必要があります。
こちらはリンク貼り付けを実行した結果です。
G列の内容を変化させると、O列の値も自動で変化します。
セルを指定してペースト
1 2 3 4 |
Sub Test() Range("A1").CurrentRegion.Copy Cells(1, 9).PasteSpecial End Sub |
A1のセルが含まれる範囲をすべてコピーし、9列目以降へペーストしています。
セルを指定した場合はCopyは使えますが、Pasteを使うことができません。
そのため、PasteSpecialを使っています。
詳しくはこちらの記事の「原因」の項目をご覧ください。
貼り付けたいセルをアクティブにしてペースト
1 2 3 4 5 |
Sub Test() Range("A1").CurrentRegion.Copy Worksheets("Sheet1").Range("I1").Activate '貼り付けたいセルをアクティブ化 ActiveSheet.Paste 'ペーストを実行 End Sub |
Pasteメソッドは、引数に何も指定しなければ、アクティブセルにペーストします。
そのため、セルを先に指定してアクティブにして置き、その次の行でPasteメソッドを実行する方法もあります。
まとめ
今回の内容をまとめるとこのようになります。
- 引数(Destination)で指定したセルに貼り付けができる。
- 引数(Destination)で貼り付け先を指定しない場合はアクティブセルに貼り付けする。
- Pasteでは指定できるのはワークシートまで。セルをしていしてPasteはできないため、PasteSpecialか引数で貼り付け先を指定する
- リンク貼り付けをすることで、コピー元が変化するとコピー先も変化する
Excel VBAの学習にはこちらの書籍を活用しています。
1冊目で基礎知識を学習し、2冊目では実際にマクロを組む際に使用しています。
2冊目はKindle Unlimitedの対象です。Kindle Unlimitedは月1,000円で対象の方が好きなだけ読むことができます。是非活用してみましょう。
サイトマップ・関連記事
こちらはこのサイト全体のサイトマップです。
こちらはExcel VBAに関する記事のサイトマップです。
コメント