
VBA上でコピーや切り取りしてクリップボードに格納された情報を貼り付けするにはPasteメソッドを使います。
Copyメソッドと同様に通常のワークシート上でも貼付けする場合は多いため、VBA上でも使用頻度が高いです。
Pasteメソッドの基本構文
Worksheetオブジェクト.Paste(Destination,Link)
Worksheetオブジェクト
Pasteメソッドを指定するWorksheetオブジェクトを指定します。
つまり、貼り付けしたいセルがあるワークシートを指定するということです。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
引数Destination
クリップボードの情報の貼り付け先セルを指定できる引数です。
この引数は省略可能です。
省略した場合はコピーした情報は現在選択されているセル範囲へ貼り付けされます。
引数Link
この引数は既定値が「False」となっており、省略可能です。
この引数を「True」で指定することで、コピー元とリンク貼り付けをすることができます。
なお、リンクされるのは値のみのため、書式もコピーしたい場合はPasteSpecialメソッドを使いましょう。
注意点としては、引数Linkを使用する際は引数Destinationを指定できませんので、Selectメソッドであらかじめ選択セルを指定しておく必要があります。
使用例
今回は下記のようにB3:B7の範囲にあるセル情報をD3:D7の範囲に貼り付けるとします。
その場合は以下のコードになります。
1 2 3 4 |
Sub ペースト例①() Range("B3:B7").Copy ActiveSheet.Paste Destination:=Range("D3") End Sub |
最初にコピー元となるB3:B7のセル範囲をCopyメソッドにてコピー。(2行目)
Worksheetオブジェクトとして今回は現在使用しているシートとなる「ActiveSheet」で指定し、そのあとにPasteメソッドを記述。
(貼り付け先のセル指定がない場合やリンク貼り付けする必要がない場合はここで終了)
そのあとに引数「Destination」として”Destination:=”に貼り付けしたいセルを記述で完了です。(3行目)
Copyメソッドに関しては下記記事をご参照ください。
【Excel VBA】セル情報をコピーするCopyメソッド | Excelを制する者は人生を制す ~No Excel No Life~
マクロの動作イメージ
Copyメソッドで指定しているB3:B7のセル範囲をD3セルへ貼り付けされました。
コピーした情報が5行×1列で5セル分、貼り付け先のセルは1行×1列で1セル分となるため、D3セルを起点に5セル分の情報が貼り付けされます。
なお、コピーされるのは値だけでなく、罫線や塗りつぶしの色等の書式の情報も貼り付けされています。
【参考】引数Destinationを省略した場合
1 2 3 4 |
Sub ペースト例②() Range("B3:B7").Copy ActiveSheet.Paste End Sub |
引数Destinationを省略した場合はクリップボードの情報は現在選択されているセル範囲に貼付けされます。
今回の例では選択されたセル範囲がF3セルになっている状態で上記マクロを起動したとします。
選択範囲となっているアクティブなF3セルを起点に貼り付けされました。
【参考】引数Linkを指定する場合
1 2 3 4 5 |
Sub ペースト例③() Range("B3:B7").Copy Range("D3").Select ActiveSheet.Paste Link:=True End Sub |
引数Linkを使用する際は引数Destinationを指定できないため、SelectメソッドであらかじめD3セルを選択しておきます。(3行目)
Pasteメソッドの後に引数「Link」として”Link:=True”を記述します。(4行目)
D3セルを起点にリンク貼り付けされました。
今回はあらかじめ罫線を貼り付け先の範囲へ設定しておりましたが、罫線を引いていない場合は書式はコピーされませんのでご注意を。
まとめ
Pasteメソッドはクリップボードの情報を貼り付けたい場合やリンク貼り付けしたい場合に有効ですね。
あとは書式情報も貼付けしたいか否かでPasteSpecialメソッドと使い分けを行いましょう。
ご参考になれば幸いです(*^^*)