Copy&Pasteメソッド
次のようなデータを作っておきます。

■ Copyメソッド
■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_1() Range("B3:C5").Copy Range("B8") Range("B3:C5").Copy Range("E8") End Sub
• Range(“B3:C5”).Copy Range(“B8”)
’セルB3~セルC5のデータをコピーして、セルB8にコピーします。
• Range(“B3:C5”).Copy Range(“E8”)
’セルB3~セルC5のデータをコピーして、セルE8にコピーします。

■ Pasteメソッド
■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_2() <pre><code>Range("B3:C5").Copy ActiveSheet.Paste Range("B8") ActiveSheet.Paste Range("E8") Application.CutCopyMode = False </code></pre> End Sub
• ActiveSheet.Paste Range(“B8”)
’アクティブシートのセルB8に貼り付ける。
• Application.CutCopyMode = False
’コピーモードをオフにします。
■ CurrentRegion.Copy
■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_3() <pre><code>Range("B3").CurrentRegion.Copy ActiveSheet.Paste Range("B8") ActiveSheet.Paste Range("E8") Application.CutCopyMode = False</code></pre> End Sub
• Range(“B3”).CurrentRegion.Copy
’セルB3を基準に表を選択し、コピーします。
PasteSpecialメソッド
PasteSpecialメソッドで貼り付ける。
■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_4() <pre><code>Range("B3:C5").Copy Range("B8").PasteSpecial Range("E8").PasteSpecial</code></pre> End Sub
• Range(“B3:C5”).Copy
’セルB3~セルC5 の内容をコピーします。

• Range(“B8”).PasteSpecial
’コピーしたデータを、セルB8に貼り付けます。

• Range(“E8”).PasteSpecial
’コピーしたデータを、セルE8に貼り付けます。
セルの背景、罫線は貼り付けされますが、列幅は貼り付けされません。

■ マクロの実行結果
コピー先 1 では、列幅が同じなので元データと同じになります。
コピー先 2 では、背景やセルのデータはペーストされますが、列幅はペーストされません。

セルの列幅を貼り付ける
セルの列幅などの書式を含んで貼り付けます。
■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_5() <pre><code>Range("B3:C5").Copy Range("B8").PasteSpecial Range("E8").PasteSpecial Range("E8").PasteSpecial (xlPasteColumnWidths)</code></pre> End Sub
• Range(“E8”).PasteSpecial (xlPasteColumnWidths)
’(xlPasteColumnWidths)を追加すると、列幅を貼り付ける事ができます。

■ マクロの実行結果
コピー先 2 のE列の幅が広がりました。

セルの書式やセル幅だけをペーストする
セルのデータはコピーしないで、書式やセル幅だけをペーストする。
■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_6() <pre><code>Range("B3:C5").Copy Range("B8").PasteSpecial (xlPasteFormats) Range("E8").PasteSpecial (xlPasteFormats) Range("E8").PasteSpecial (xlPasteColumnWidths) Application.CutCopyMode = False Range("A1").Select</code></pre> End Sub
• Range(“B3:C5”).Copy
’セルB3~セルC5の内容がコピーされます。

• Range(“B8”).PasteSpecial (xlPasteFormats)
’セルB8に書式だけを貼り付けます。

• Range(“E8”).PasteSpecial (xlPasteFormats)
’セルE8に書式だけを貼り付けます。

• Range(“E8”).PasteSpecial (xlPasteColumnWidths)
’セルE8の列幅を広げます。

• Application.CutCopyMode = False
’コピーモードを解除します。

• Range(“A1”).Select
’セルの位置をセルA1にします。

■ マクロの実行結果
コピー先1とコピー先2には、元データの数値が入力されず 書式だけペースト されます。
セルE8の列幅も、広がります。

PasteSpecialの引数
Paste設定値 | 説明 |
---|---|
xlPasteAll | すべて |
xlPasteAllExceptBorders | 罫線を除く全て |
xlPasteAllUsingSourceTheme | コピー元のテーマを使用してすべて貼り付け |
xlPasteAllMergingConditionalFormats | すべての結合されている条件付き書式 |
xlPasteColumnWidths | 列幅 |
xlPasteComments | コメント |
xlPasteFormats | 書式 |
xlPasteFormulas | 書式 |
xlPasteFormulasAndNumberFormats | 数式と数値の書式 |
xlPasteValidation | 入力規則 |
xlPasteValues | 値 |
xlPasteValuesAndNumberFormats | 値と数値の書式 |
Operation設定値 | 説明 |
---|---|
xlPasteSpecialOperationAdd | 加算 |
xlPasteSpecialOperationDivide | 除算 |
xlPasteSpecialOperationMultiply | 乗算 |
xlPasteSpecialOperationNone | しない |
xlPasteSpecialOperationSubtract | 減算 |
Cutメソッドで移動する
Cutメソッドでセルの内容を移動します。

■ コード内を「Wクリック」で選択できます。
Sub サンプル3346_7() <pre><code>Range("B3:C5").Cut Range("E3")</code></pre> End Sub
• Range(“B3:C5”).Cut Range(“E3”)
’セルB3~セルC5の内容を、セルE3に移動します。

以上で「セルの内容をコピーして貼り付ける」の説明を終わります。