【ExcelVBA】結合セルの値を結合セルにコピー&ペーストする方法

こんにちはJitanTechです。

みなさんは、Excelで結合セルの値を別の結合セルに貼りつけたいと思ったことはありませんか。

しかし、やってみると以下の動画のようになり、結局はセルの中身をひとつづつ貼り付けたり、数式を使ってなんとか値を入れたりしたのではないでしょうか。

今回は、そのような場合にマクロを使用することで、コピーした結合セルの値を別の結合セルに貼りつける方法をご紹介します。

では行ってみましょう。

結合セルに貼りつけるコード

以下のコードではコピーした結合セルの値を、結合セル上に貼り付けます。

Sub test()

     Application.ScreenUpdating = False

     ' Microsoft Forms 2.0 Object Library の参照
     Dim dob As Object
     Set dob = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

     'クリップボードからDataObjectにデータを取得する(VBAとクリップボードの橋渡し)
     dob.GetFromClipboard

     ' クリップボードのテキストを取得
     Dim clp_txt As String
     clp_txt = dob.GetText

     ' 行方向を改行コードで分割する
     Dim clp_ary As Variant
     clp_ary = Split(clp_txt, vbCrLf)

     ' 貼り付け先セルを取得
     Dim dist_row As Long
     Dim dist_col As Long
     dist_row = ActiveCell.Row
     dist_col = ActiveCell.Column

     For i = 0 To UBound(clp_ary) - 1

         ActiveSheet.Cells(dist_row + i, dist_col) = clp_ary(i)

     Next

     Application.ScreenUpdating = True

End Sub

・7行目では、Microsoft Forms 2.0 Object Library への参照設定と同じ意味になります。

 CreateObject(“new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}”)

・18行目では、コピーしたセルの値を改行コードで分割して配列に入れています。

 clp_ary = Split(clp_txt, vbCrLf)

・28行目で、貼り付け先のアクティブセルから1行ずつ書き込んでいます。

 ActiveSheet.Cells(dist_row + i, dist_col) = clp_ary(i)

実行結果

さいごに

いかがだったでしょうか。

今回は、結合セルの値をコピーして別の結合セルに貼りつけるマクロをご紹介しました。

是非ご活用ください。

ではまた。

コメント