VBA開発

クリップボードの中身を貼り付ける【Pasteメソッド】※PasteSpecialがおすすめ

構文

Object.Paste(Destination, Link)

Destination・・・【省略可能】貼り付け先のセルを選択
Link・・・・・・【省略可能】リンク貼り付けするかどうか
ObjectはPasteSpecialメソッドと異なり、WorkSheetオブジェクトです。
Pasteメソッドはエラーも出やすく、コピペする場合は、PasteSpecialメソッドをお勧めします

引数の内容

引数内容省略可否備考
Destination貼付先のセル範囲Range(“A1:A10”)等を記載省略可能引数Linkと同時設定不可
LinkTRUEリンク貼り付けする省略可能引数Destinationと同時設定不可
FALSEリンク貼り付けしない

コードサンプル

Public Sub test()

'■セル内容が計算式の場合------------------------
    '■セルA1に「=B1」を設定してコピー
    Range("A1").Copy
    
    '■セルA5にペースト(結果=B6)
    ActiveSheet.Paste Destination:=Range("A5")
    
    
    '■セルA10にペースト(結果=$A$1)
    Range("A10").Select
    ActiveSheet.Paste Link:=True
    
    '■セルA15にペースト(結果=B15)
    Range("A15").Select
    ActiveSheet.Paste Link:=False
    
        
'■セル内容が値の場合------------------------
    '■セルA1に「10」を設定してコピー
    Range("A1").Copy
    
    '■セルA5にペースト(結果10)
    ActiveSheet.Paste Destination:=Range("A5")
    
    
    '■セルA10にペースト(結果=$A$1)
    Range("A10").Select
    ActiveSheet.Paste Link:=True
    
    '■セルA15にペースト(結果=10)
    Range("A15").Select
    ActiveSheet.Paste Link:=False
    
End Sub

 

使い方例

私はあまりこのメソッドは使用しません。
Pasteメソッドと聞くとPasteSpecialメソッドよりメインの処理かと思いますが、使い勝手が悪いです。
是非ともPasteSpecialメソッドをお使いください。

Pasteメソッドを使わない理由

ObjectがWorksheetオブジェクトである為使いにくい。(エラーが出やすい)

    '■WorksheetではなくRangeを指定する為エラー
    Range("A10").Paste Link:=True
  '→実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。

    ’■クリップボードが空の場合エラー
    Range("A1").Copy
    Application.CutCopyMode = False
    ActiveSheet.Paste Destination:=Range("A5")
  '→実行時エラー 1004 WorkSheetクラスのPasteメソッドが失敗しました。
    

コメント

タイトルとURLをコピーしました