HOME > エクセルVBA >セルの操作「データのコピー・貼り付け」

セルのデータをコピー・貼り付け

 エクセルの基本操作の一つ、コピー貼り付けですが、もちろんVBAでも使用できます。マクロの記録で記録した場合は冗長なプログラムになります。覚えてしまえば簡単なのでVBAを利用して自分で記述していきましょう。

クリップボードを経由せずにデータをコピーする

 エクセルでデータをコピー貼り付けしたら、クリップボードに一旦保存されます。マクロの記録でも同様にデータを一旦クリップボードに保存します。

 下記コードはマクロの記録を利用して、セルA1〜A3をコピーし、セルB1〜B3に貼り付けています。2行目のSelection.Copyがデータをクリップボードに保存し、4行目のActiveSheet.Pasteがデータを貼り付けています。

Sub Macro1()

Range("A1:A3").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste

End Sub
クリップボードを経由せずにコピーする

 しかし、クリップボードを経由せずに直接データをコピーすることも出来ます。VBAで記述すると次のようになります。たった1行で終わるのでプログラム全体が大きくなってきたら当然全体のスピードにも影響がでてきます。

 Range("A1:A3").copy Destination: = Range("B1")

形式を選択して貼り付け

 コピーしたデータを形式を選択して貼り付けることも出来ます。VBAではPasteSpecialメソッドに相当します。

形式を選択して貼り付け

定数 貼り付ける内容
すべて xlPasteAll
数式 xlPasteFormulas
xlPasteValues
書式 xlPasteFormats
コメント xlPasteComments
入力規則 xlPasteValidation
罫線を除くすべて xlPasteAllExceptBorders
列幅 xlPasteColumnWidths
数式と数値の書式 xlPasteFormulasAndNumberFormats
値と数値の書式 xlPasteValuesAndNumberFormats

Range("A1").Copy
 Range("A2").PasteSpecial Paste:=xlPasteValues

 引数を省略した場合は「xlPasteAll」がデフォルト値になります。

 演算方法についても引数を設定することができます。形式を選択した後に下記引数を設定しましょう。

定数 貼り付ける内容
演算をしない xlPasteSpecialOperationNone
加算 xlPasteSpecialOperationAdd
減算 xlPasteSpecialOperationSubtract
乗算 xlPasteSpecialOperationMultiply
除算 xlPasteSpecialOperationDivide

Range("A1").Copy
 Range("A2").PasteSpecial Paste:=xlPasteAll, _
 Operation:=xlPasteSpecialOperationNone

セルの操作3  エクセル職人  セルの操作5

▲TOPへ移動