セルのリンク貼り付け

セルに値そのものを貼りつけるのではなく、コピー元の値を参照するように貼りつけるリンク貼り付けが利用できます。ここでは Excel VBA でセルのリンク貼り付けを行う方法を解説します。

(Last modified: )

セルのリンク貼り付けを行う

セルを単にコピーして貼り付けた場合には、コピー元の値がそのまま貼り付けられています。

セルのリンク貼り付け

上記はセル範囲B2:C5をセルE2に貼り付けたものです。例えばセルF3の値はコピー元の値である「1200」と言う数値がそのままコピーされています。

セルのリンク貼り付け

また計算式などもセルF5の値を見て頂くと分かる通り、コピー元で相対参照の形式で上2つのセルの合計を表す式が入力されていたので、コピーされたセルF5の値も相対参照によって上2つのセルの合計が入るような計算式が入っています。

このように単にコピー元の値をコピーするのではなく、コピー元の値をそのまま参照するようにコピーすることが可能です。これをリンク貼り付けと言います。

セルのリンク貼り付け

上記はリンク貼り付けを行った例です。セルF3の値を見てください。セルF3にはコピー元のセルに入っていた値がコピーされるのではなく、コピー元のセルを参照するように設定されています。このため、コピー元のセルC3の値を変更すると、自動的にセルF3の値も変更されます。

通常の貼り付けではなく、リンク貼り付けを行う場合には、「Paste」メソッドを実行する際に「Link」引数に「True」を設定します。

Range("A1").Copy

Range("B2").Select
ActiveSheet.Paste Link:=True

注意点としては「Link」引数を指定する場合には、「Destination」引数は同時に指定できないことです。その為、貼り付ける時点で選択されていたセルに貼り付けが行われます。

またリンク貼り付けを行う場合には、書式はコピーされないようですので注意して下さい。

サンプルプログラム

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

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

セルのリンク貼り付け

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

Sub テスト()

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

End Sub

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

セルのリンク貼り付け

-- --

Excel VBA でセルのリンク貼り付けを行う方法を解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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