Copy&Pasteメソッド
次のようなデータを作っておきます。
■ Copyメソッド
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メソッド
Sub サンプル3346_2() Range("B3:C5").Copy ActiveSheet.Paste Range("B8") ActiveSheet.Paste Range("E8") Application.CutCopyMode = False End Sub
• ActiveSheet.Paste Range("B8")
’アクティブシートのセルB8に貼り付ける。
• Application.CutCopyMode = False
’コピーモードをオフにします。
■ CurrentRegion.Copy
Sub サンプル3346_3() Range("B3").CurrentRegion.Copy ActiveSheet.Paste Range("B8") ActiveSheet.Paste Range("E8") Application.CutCopyMode = False End Sub
• Range("B3").CurrentRegion.Copy
’セルB3を基準に表を選択し、コピーします。
PasteSpecialメソッド
PasteSpecialメソッドで貼り付ける。
Sub サンプル3346_4() Range("B3:C5").Copy Range("B8").PasteSpecial Range("E8").PasteSpecial End Sub
• Range("B3:C5").Copy
’セルB3~セルC5 の内容をコピーします。
• Range("B8").PasteSpecial
’コピーしたデータを、セルB8に貼り付けます。
• Range("E8").PasteSpecial
’コピーしたデータを、セルE8に貼り付けます。
セルの背景、罫線は貼り付けされますが、列幅は貼り付けされません。
●マクロの実行結果
コピー先 1 では、列幅が同じなので元データと同じになります。
コピー先 2 では、背景やセルのデータはペーストされますが、列幅はペーストされません。
セルの列幅を貼り付ける
セルの列幅などの書式を含んで貼り付けます。
Sub サンプル3346_5() Range("B3:C5").Copy Range("B8").PasteSpecial Range("E8").PasteSpecial Range("E8").PasteSpecial (xlPasteColumnWidths) End Sub
• Range("E8").PasteSpecial (xlPasteColumnWidths)
’(xlPasteColumnWidths)を追加すると、列幅を貼り付ける事ができます。
●マクロの実行結果
コピー先 2 のE列の幅が広がりました。
セルの書式やセル幅だけをペーストする
セルのデータはコピーしないで、書式やセル幅だけをペーストする
Sub サンプル3346_6() Range("B3:C5").Copy Range("B8").PasteSpecial (xlPasteFormats) Range("E8").PasteSpecial (xlPasteFormats) Range("E8").PasteSpecial (xlPasteColumnWidths) Application.CutCopyMode = False Range("A1").Select 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メソッドでセルの内容を移動します。
Sub サンプル3346_7() Range("B3:C5").Cut Range("E3") End Sub
• Range("B3:C5").Cut Range("E3")
’セルB3~セルC5の内容を、セルE3に移動します。
■関連記事■ 空白セルや数式セルの参照
■関連記事■ セル範囲の縮小と拡張
■関連記事■ セル範囲の名前の設定と削除
■関連記事■ セルの内容をコピーして貼り付ける
以上で「セルの内容をコピーして貼り付ける」の説明を終わります。