はじめに
セルのコピー&ペーストは値を貼り付ける際、様々なオプションが可能です。ただ注意点として、コピー範囲でセルの結合がある場合、問題が発生する場合があります。
今回は、複数セルのコピー&ペーストを解説します。
複数セルのコピー&ペースト
Sheet1にあるA1~D5までの範囲をSheet2にコピーするプログラムを示します。

Sub testCopy1()
Worksheets("Sheet1").Range("A1:D5").Copy
Worksheets("Sheet2").Range("B2").PasteSpecial
Application.CutCopyMode = False
End Sub

このプログラムでは、Sheet1にあるA1~D5までの範囲をSheet2のB2を起点にペーストします。
値だけでなく書式設定も含めた全てがコピーされます。
最後の Application.CutCopyMode = False はクリップボードに残った値を解除しています。
PasteSpecial メソッドのパラメーター
貼り付けで使用したPasteSpecial メソッドは、Excelシート操作での「形式を選択して貼り付け」のオプションを指定できます。
PasteSpecial (貼り付けタイプ , 貼り付け操作 , SkipBlanks , Transpose )
パラメータ | 内 容 |
---|---|
貼り付けタイプ XlPasteType | xlPasteAll (全てを貼り付け)、xlPasteValues (値を貼り付け) など |
貼り付け操作 XlPasteSpecialOperation | コピーされたデータを貼り付け先で計算する(xlNoneとして使わない場合が多い) |
SkipBlanks | Trueにすると空白は貼り付けされません。既定値はFalse。 |
Transpose | Trueにすると行列を入替えます。既定値はFalse。 |
パラメーターは全て省略可能です。
貼り付けで使用するパラメーターは、「マクロの記録」で実際に操作すれば調べる事ができて便利です。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1:D5").Select
Selection.Copy
Sheets("Sheet3").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
マクロの記録を使って「値のみ」の貼り付けを行った例。PasteSpecial のパラメーターを確認できます。
セルの結合がある場合
コピー元にセルが結合されている場合、コピー&ペーストはセルの結合も含めてコピーされます。
貼り付け先の範囲にセルの結合が設定されていてコピー先とことなる場合は、エラーが発生します。
コピー元に結合セルがある場合
図のように、コピー元の範囲でセルの結合が跨いでいる場合は、結合部分がカットされて貼り付けられます。

'コピー元に結合セルがあっても切り取られてペーストできる
Sub testCopy2()
Worksheets("Sheet1").Range("B1:D4").Copy
Worksheets("Sheet2").Range("B2").PasteSpecial
Application.CutCopyMode = False
End Sub

この場合、結合セルは左上のセルに値が残り、それ以外の場合は値は無くなります。
コピー先に結合セルがある場合
図のように、コピー先の範囲でセルの結合が跨いでしまう場合は、エラーとなってしまいます。

Sub testCopy3()
Worksheets("Sheet1").Range("A1:D5").Copy
Worksheets("Sheet2").Range("B2").PasteSpecial 'エラー
Application.CutCopyMode = False
End Sub

このような事を避けるには、コピー先の範囲の結合セルを予め解除しておきます。
結合セルの解除は、UnMerge メソッドを使います。
Sub testCopy4()
Worksheets("Sheet2").Range("B2:E6").UnMerge '結合セルの解除
Worksheets("Sheet1").Range("A1:D5").Copy
Worksheets("Sheet2").Range("B2").PasteSpecial
Application.CutCopyMode = False
End Sub
まとめ
貼り付けで使用する PasteSpecial メソッドのパラメーターは、「マクロの記録」で実際に操作すれば調べる事ができます。
複数セルのコピー&ペーストでは、コピー元の結合セルに関しては問題ありませんが、コピー先の結合セルではエラーとなってしまいます。
コピー先に結合セルがあると想定される場合は、UnMerge で’結合セルの解除をしておくと良いでしょう。