構文
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】
コメント
減算と除算逆ではないでしょうか
ありがとうございます。修正しました。