セルの貼り付け

セルを切り取ったりコピーしたりした後でクリップボードに保存されたデータを貼り付ける方法です。ここでは Excel VBA を使ってセルを貼りつける方法について解説します。

(Last modified: )

セルを貼りつける

コピーや切り取ったセルを貼り付けるには Worksheet オブジェクトに対して「Paste」メソッドを使います。(Rangeオブジェクトではないので注意して下さい)。

Range("A1").Copy

Range("B2").Select
ActiveSheet.Paste

シートの中で貼り付けられる場所は、現在シートの中で選択されているセルとなります。また「Destination」引数を使ってデータを貼り付けるセルを指定することも出来ます。

Range("A1").Copy

ActiveSheet.Paste Destination:=Range("E2")

※ セルのコピーや切り取りの方法については「セルのコピーと切り取り」を参照されてください。

コピーモード

「Cut」メソッドや「Copy」メソッドを使った場合に「Destination」プロパティをしなかった場合はクリップボードにデータが保存されただけの状態になります。この状態をコピーモードと呼びます。この状態ではコピーなどがされたセル領域が点滅した状態になっています。

セルの貼り付け

コピーモードにある場合に、他のセルに貼り付けを行うことができます。1回貼り付けを行っただけではコピーモードは解除されません。

セルの貼り付け

その為、コピーモードにある場合は続けて何度でも貼り付けを行うことが出来ます。

貼り付けが終わってコピーモードを解除する場合には、Applicationオブジェクトで用意されている「CutCopyMode」プロパティに「False」を設定します。

Range("A1").Copy

ActiveSheet.Paste Destination:=Range("B1")
ActiveSheet.Paste Destination:=Range("C1")

Application.CutCopyMode = False

サンプルプログラム

では簡単なサンプルで試してみましょう。

下記のようなExcelファイルを用意します。

セルの貼り付け

表(セル範囲B2:C5)をまとめてコピーし、セルE2とセルB7の位置へ貼り付けます。

Sub テスト()

    Dim range1 As Range
        
    Set range1 = Range("B2:C5")
    range1.Copy
    
    ActiveSheet.Paste Destination:=Range("E2")
    ActiveSheet.Paste Destination:=Range("B7")
    
    Application.CutCopyMode = False

End Sub

上記マクロを実行すると次のようになります。

セルの貼り付け

-- --

Excel VBA を使ってセルを貼りつける方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。