Excel VBA での貼り付け操作は、クリップボードのあるデータを指定された範囲に貼り付けるためのものです。
基本的な貼り付け操作に関する情報やそのバリエーションについてわかる記事になっています。
基本的な貼り付けする方法
A1セルの内容をB1セルにコピーするコードです。
Range("A1").Copy
Range("B1").PasteSpecial
PasteSpecial メソッドとは
Excel VBA でクリップボードにあるデータを特定の形式やオプションで範囲に貼り付けるための非常に強力なツールです。
PasteSpecial メソッドの主な引数と役割とは
貼り付け
- xlPasteAll: すべての情報を貼り付けます。
- xlPasteFormats: セルの書式のみを貼り付けます。
- xlPasteFormulas: 数式のみを貼り付けます。
- xlPasteValues: 値のみを貼り付けます。
- xlPasteComments: コメントのみを貼り付けます。
- xlPasteValidation:データの検証設定のみを貼り付けます。
- xlPasteAllUsingSourceTheme: 全ての情報をソースのテーマを使用して貼り付けます。
操作
- xlNone: 操作を指定しない(一応)。
- xlAdd: 貼り付けるデータを既存のセルの値に加算します。
- xlSubtract: 貼り付けるデータを既存のセルの値から減算します。
- xlMultiply: 貼り付けるデータを既存のセルの値と乗算します。
- xlDivide: 既存のセルの値を貼り付けるデータを付けて除算します。
スキップブランク
- True: コピー元の範囲内で空白のセルを無視して、対象のセルのデータをそのまま保持します。
- False: コピー元の範囲内のすべてのセル(空白を含む)を貼り付けます。
トランスポーズ
- True: 行と列を書き換えてデータを貼り付けます。
- False: データをそのままの形で貼り付けます。
値のみを貼る
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
書式のみを貼る
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteFormats
値と書式を貼り付ける
Range("A1:A10").Copy
Range("B1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
数式のみを貼り付ける
Range("A1:A10").Copy
Range("B1").PasteSpecial Paste:=xlPasteFormulas
行と列を転置して貼り付ける
Range("A1:B2").Copy
Range("C1").PasteSpecial Transpose:=True
貼り付けながら加算する
Range("A1:A10").Copy
Range("B1").PasteSpecial Operation:=xlAdd
貼り付け操作の注意点
VBAで貼り付け操作を行う場合は操作の終了後にExcelの選択範囲が点線でコピーや切り取り状態のままです。Application.CutCopyMode = Falseのコードでポイント線を止めることが望ましいです。これにより、コピーまたは切り取りモードを解除し、クリップボードからの誤操作による追加貼り付けを防ぎます。