エクセルVBAで形式を選択してセルをコピー、貼付けする!

エクセルVBAで、形式を選択してセルをコピーする方法を紹介します。セルをコピーする場合はCopyメソッドを、形式を選択して貼付けはPasteSpecialメソッドを使います。値だけ、形式だけをコピーしたいといった場合、PasteSpecialメソッドを使用すると簡単に貼り付けられます。Copyメソッドを使用することで、セルの値だけでなくセル範囲、別シートへの貼付けもできるので、2つのメソッドを使用して色々なパターのコピー貼付けができるようになります。セルのコピー貼付けはエクセルでよく使用するので、覚えると便利です。

 

 

CopyとPasteSpecialメソッドで形式を指定して貼付け

エクセルVBAでセルをコピーする場合は、Copyメソッドを使います。

Copyメソッドはセルの値だけでなく、セルの範囲やセルを別シートにコピーすることもできます。

Copyメソッドの構文

expression.Copy(Destination)

expression 必ず指定します。対象となる Range オブジェクトを返すオブジェクト式を指定します。
Destination 省略可能です。バリアント型 (Variant) の値を使用します。コピー先のセル範囲を指定します。この引数を省略すると、クリップボードへコピーされます。

 

 

エクセルVBAで形式を選択してセルをコピー貼り付けする場合は、PasteSpecialメソッドを使います。

 Object.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

CopyメソッドとPasteSpecialメソッドを使用すると、セルを形式を選択してコピー、貼り付けできます。

Paste 貼り付ける方法を指定(省略可能)
Operation 演算して貼り付ける場合の演算方法を指定(省略可能)
SkipBlanks 空白セルを無視するか指定。無視する(True)、無視しない(False)(省略可能)
Transpose 行列入れ替えを指定。入れ替える(True)、入れ替えない(False)(省略可能)

 

PasteSpecial の引数に定数を指定することで、形式を選択して貼り付けできます。

引数「Paste」に使用する定数

定数 内容
xlPasteAll (既定) -4104 すべて
xlPasteFormulas -4123 数式のみ
xlPasteValues -4163 値のみ
xlPasteFormats -4122 書式のみ
xlPasteComments -4144 コメント
xlPasteValidation 6 入力規則
xlPasteAllExceptBorders 7 罫線を除くすべて
xlPasteColumnWidths 8 列幅
xlPasteFormulasAndNumberFormats 11 数式と数値の書式

 

セルの値だけをコピーする

セルの値だけを、コピーしてみましょう。

Sub セルの値だけコピー()
Range(“A1”).Copy
Range(“C1”).PasteSpecial (xlPasteValues)
End Sub

セルA1の値が、C1にコピーされます。

この場合、コピーモードになるので、Application.CutCopyMode に False を指定すると、コピーモードを解除できます。

コピーモードを解除してセルの値だけコピーする。

Sub コピーモードを解除してセルの値だけコピー()
Range(“A1”).Copy
Range(“C1”).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub

セルを全てコピーする場合は、次のようにCopy メソッドでコピーできます。

Sub セルを全てコピー()
Range(“A1”).Copy Range(“C1”)
End Sub

セルA1が、C1に全てコピーされます。

 

 

セルの範囲を値だけコピーする

エクセルVBAでセルの範囲を値だけコピーする場合は、範囲を指定します。

Sub セル範囲を値だけコピー()
Range(“A1:C2”).Copy
Range(“D1:F2”).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub

セル範囲「A1:C2」の値が、セル範囲「D1:F2」にコピーされます。

セル範囲のコピーは、次のように省略することもできます。

Sub セル範囲を値だけコピーA()
Range(“A1:C2”).Copy
Range(“D1”).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub

セルの値だけを範囲にコピーしたい場合は、次のようになります。

Sub セル値だけを範囲にコピー()
Range(“A1”).Copy
Range(“B1:D3”).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub

セル「A1」の値が、セル範囲「B1:D3」にコピーされます。

 

 

セルの値を別シートにコピーする

セルの値だけを別シートにコピーしてみましょう。

Sub セル値だけを別シートのコピー()
Worksheets(“Sheet1”).Range(“A1:C3”).Copy
Worksheets(“Sheet2”).Range(“D1:F3”).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub

シート「Sheet1」セル範囲「A1:C3」の値だけが、シート「Sheet2」セル範囲「D1:F3」にコピーされます。

別シートへのセル範囲コピーは、次のように省略することもできます。

Sub セル値だけを別シートのコピーA()
Worksheets(“Sheet1”).Range(“A1:C3”).Copy
Worksheets(“Sheet2”).Range(“D1”).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub

 

Copyメソッドを使用せずに値をコピー

ここでは、エクセルVBA Copyメソッドを使用して、セルを形式を選択してコピー貼付けしましたが、単純にセルの値を別セルにコピーする場合は、Copyメソッドを使用しなくてもできます。VBAでセルの値を別セルに転記すれば、セルがコピーされます。セルを全てコピーする場合は、Copyメソッドだけを使用すれだけでいいです。コピーはエクセルでは基本の操作になります。定期的に同じコピーを行う場合は、 VBAを使用した方が、効率よく作業ができます。ボタンを作成して、ボタンから実行させると、さらに作業が楽になります。

こちらの記事もご覧ください。⇒エクセルVBAでセルを別シート(セルの範囲も紹介)にコピーする方法