構文
Object.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
Paste ・・・・・貼り付ける内容
Operation ・・・【省略可能】演算して貼り付けするかどうか
SkipBlanks・・・【省略可能】True(空白セルを無視) False(空白セルを無視しない:規定値)
Transpose ・・・【省略可能】True(行列を入れ替える) False(行列を入れ替えない:規定値)
Operation ・・・【省略可能】演算して貼り付けするかどうか
SkipBlanks・・・【省略可能】True(空白セルを無視) False(空白セルを無視しない:規定値)
Transpose ・・・【省略可能】True(行列を入れ替える) False(行列を入れ替えない:規定値)
定数
区分 | 定数 | 値 | 内容 |
Paste | xlPasteAll | -4104 | すべて貼付(規定値) |
xlPasteFormulas | -4123 | 数式を貼付 | |
xlPasteValues | -4163 | 値を貼付 | |
xlPasteFormats | -4122 | 書式を貼付 | |
xlPasteComments | -4144 | コメントを貼付 | |
xlPasteValidation | 6 | 入力規則を貼付 | |
xlPasteColumnWidths | 8 | 列幅を貼付 | |
xlPasteAllExceptBorders | 7 | 罫線を除く全てを貼付 | |
xlPasteAllMergingConditionalFormats | 14 | すべての結合されている 条件付き書式を貼付 | |
xlPasteAllUsingSourceTheme | 13 | コピー元のテーマを 使用してすべて貼付 | |
xlPasteFormulasAndNumberFormats | 11 | 数式と数値の書式を貼付 | |
xlPasteValuesAndNumberFormats | 12 | 値と数値の書式を貼付 | |
Operation | xlPasteSpecialOperationNone | -4142 | 計算しない(規定値) |
xlPasteSpecialOperationAdd | 2 | 加算する(+) | |
xlPasteSpecialOperationSubtract | 3 | 減算する(-) | |
xlPasteSpecialOperationMultiply | 4 | 乗算(掛け算)する(×) | |
xlPasteSpecialOperationDivide | 5 | 徐算(割り算)する(÷) | |
SkipBlanks | ー | TRUE | 空白を無視する |
FALSE | 空白を無視しない(規定値) | ||
Transpose | ー | TRUE | 行列を入れ替える |
FALSE | 行列を入れ替えない(規定値) |
コードサンプル
Public Sub test() Range("A1").CurrentRegion.Copy 'A1の範囲の表をコピー '■基本処理 Range("A20").PasteSpecial Paste:=xlPasteAll '全て貼り付け '■複数情報貼り付ける場合は複数回実施する必要あり Range("A20").PasteSpecial Paste:=xlPasteValues '値で貼り付け Range("A20").PasteSpecial Paste:=xlPasteFormats '書式の貼り付け '■空白は無視、行列を入れ替える(無視しても行列の空白を詰めるわけではない) Range("D20").PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True, Transpose:=True '■空白は無視、行列を入れ替えない。既存の貼り付け先と今回のペーストを足し算する Range("D20").PasteSpecial Paste:=xlPasteAll, Operation:=xlPasteSpecialOperationAdd, SkipBlanks:=True, Transpose:=False end sub
使い方例
上記定数で使用する頻度が高いのは、「xlPasteValues」「xlPasteFormats」でしょう。
エクセルの特性をくみ取り、値だけで反映するケース(xlPasteValues)や、
エクセルで作成したフォーマットを貼り付けるケース(xlPasteFormats)などで使用します。
注意をしないといけないのは、値を貼り付けを多用は禁物です。
通常値の反映は上記のPasteSpecialメソッドを使わず、セルへの代入で行う方が一般的です。
関連記事
【VBA一覧】XlPasteType列挙 定数一覧
クリップボードの中身を貼り付ける【Pasteメソッド】※PasteSpecialがおすすめ
テンプレートシートの行幅をコピーする【ExcelVBA】
テンプレートシートの行幅をコピーする【ExcelVBA】
コメント
減算と除算逆ではないでしょうか
ありがとうございます。修正しました。