【VBA】Copyメソッドを使用した値の設定

Excel VBAでは、セルやシートをコピーする際に Copyメソッド を使用します。これは、Excelの「コピー & 貼り付け」をコードで実現する方法です。本記事では、セルの値をコピーして設定する方法を中心に解説します。


1. 基本構文

Range("コピー元").Copy Range("コピー先")
  • コピー元 … 値をコピーするセルや範囲
  • コピー先 … 値を貼り付ける開始位置

2. セルの値をコピー

Sub CopyValue1()
    Range("A1").Copy Range("B1")
End Sub

👉 「A1」の値を「B1」にコピーします。


3. 複数セルの値をコピー

Sub CopyValue2()
    Range("A1:B2").Copy Range("D1")
End Sub

👉 「A1:B2」の範囲を「D1」から始まる位置にコピーします。
範囲の大きさが同じだけコピーされます。


4. コピー後に値だけを設定する

Copy と組み合わせて PasteSpecial を使うことで、書式を除いた「値だけ」を貼り付けできます。

Sub CopyValueOnly()
    Range("A1:B2").Copy
    Range("E1").PasteSpecial Paste:=xlPasteValues
End Sub

👉 数式や書式を無視して、値のみコピーします。


5. コピーモードの解除

Copy を実行すると、Excelはコピー状態(点滅する枠が表示される状態)になります。
マクロ終了後もそのまま残ると見た目が気になるため、最後に コピーモードを解除 すると良いです。

解除には Application.CutCopyMode = False を使います。

Sub CopyValueWithClear()
    Range("A1:B2").Copy
    Range("E1").PasteSpecial Paste:=xlPasteValues
    
    'コピー状態を解除
    Application.CutCopyMode = False
End Sub

👉 これで「点滅するコピー枠」が消え、すっきりします。

6. 注意点

  • Copy は「コピー状態」になるため、Paste または PasteSpecial を併用する
  • 値だけを設定する場合は PasteSpecial xlPasteValues が便利
  • 最後に Application.CutCopyMode = False を入れるとコピー枠を解除できる

7. まとめ

  • Copy はセルや範囲をコピーするメソッド
  • 値だけ貼り付けたいときは PasteSpecial xlPasteValues
  • 仕上げに Application.CutCopyMode = False でコピーモード解除

コメント

タイトルとURLをコピーしました