セルの内容をコピーして貼り付ける

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()
 
    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

  ■ コード内を「Wクリック」で選択できます。

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メソッドで貼り付ける。

  ■ コード内を「Wクリック」で選択できます。

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 では、背景やセルのデータはペーストされますが、列幅はペーストされません。

セルの列幅を貼り付ける

セルの列幅などの書式を含んで貼り付けます。

  ■ コード内を「Wクリック」で選択できます。

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列の幅が広がりました。

セルの書式やセル幅だけをペーストする

セルのデータはコピーしないで、書式やセル幅だけをペーストする

  ■ コード内を「Wクリック」で選択できます。

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メソッドでセルの内容を移動します。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル3346_7()
  
    Range("B3:C5").Cut Range("E3")
    
End Sub

• Range("B3:C5").Cut Range("E3")
 ’セルB3~セルC5の内容を、セルE3に移動します。

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