【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!
形式を選択して貼り付ける(PasteSpecialメソッド)|Excel VBA |
マニュアル操作による「形式を選択して貼り付け」の機能のほぼ全てを実現します。例外は「リンク貼り付け」で、この場合はPasteメソッドを使用します。引数Pasteが「貼り付け」、Operationが「演算」の各項目に対応しています。次に示す表で確認してください。
構文 Object.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
設定項目 | 内容 |
---|---|
Object | Rangeオブジェクト |
Paste | 何を貼り付けるかを指定します(下表参照)[省略可能] |
Operation | 演算して貼り付けの際の演算方法を指定します(下表参照)[省略可能] |
SkipBlanks | 空白セルを無視する(True)、無視しない(False:既定値)[省略可能] |
Transpose | 行列を入れ替える(True)、入れ替えない(False:既定値)[省略可能] |
貼り付け対象 | 定数 | 値 | バージョン |
---|---|---|---|
すべて | xlPasteAll(既定) | -4104 | |
数式 | xlPasteFormulas | -4123 | |
値 | xlPasteValues | -4163 | |
書式 | xlPasteFormats | -4122 | |
コメント | xlPasteComments | -4144 | |
入力規則 | xlPasteValidation | 6 | 2002以降(※) |
罫線を除く全て | xlPasteAllExceptBorders | 7 | |
列幅 | xlPasteColumnWidths | 8 | 2002以降(※) |
数式と数値の書式 | xlPasteFormulasAndNumberFormats | 11 | 2002以降 |
値と数値の書式 | xlPasteValuesAndNumberFormats | 12 | 2002以降 |
コピー元のテーマを使用してすべて貼り付け | xlPasteAllUsingSourceTheme | 13 | 2007以降 |
すべての結合されている条件付き書式 | xlPasteAllMergingConditionalFormats | 14 | 2010以降 |
演算 | 定数 | 値 |
---|---|---|
しない | xlPasteSpecialOperationNone(既定) | -4142 |
加算 | xlPasteSpecialOperationAdd | 2 |
減算 | xlPasteSpecialOperationSubtract | 3 |
乗算 | xlPasteSpecialOperationMultiply | 4 |
除算 | xlPasteSpecialOperationDivide | 5 |
B列には何行目かを返すRow関数、C列にはB列の値を1000倍する数式と数値の書式、および塗りつぶし、文字の色、太字、罫線といった書式が設定されている表があるとします。
次のサンプルはセルB1のアクティブセル領域を、形式を選択して貼り付けます。
Sub PasteSpacialSample()
Range("B1").CurrentRegion.Copy '-----(1)
Range("E1").PasteSpecial Paste:=xlPasteValues '-----(2)
Range("H1").PasteSpecial Paste:=xlPasteFormats '-----(3)
Range("H1").PasteSpecial Paste:=xlPasteColumnWidths '-----(4)
Range("K1").PasteSpecial xlPasteAll, Transpose:=True '-----(5)
Range("K1").PasteSpecial xlPasteValues, Transpose:=True '-----(6)
Application.CutCopyMode = False
End Sub
セルB1 のアクティブセル領域を(1)のステートメントでクリップボードにコピーし、(2)で「値」貼り付けをします。
(3)では書式の貼り付け、(4)で列幅のコピーを行います。各引数で指定できるのは1種類のみですので、組み合わせて使う際にはこの例のように複数回実行してください。
「値」貼り付けをしたいけど、数値やセルの書式など数式以外をすべて引き継ぎたい、といった場合には、(5)と(6)のステートメントのように「すべて」を貼り付けた後、「値」貼り付けを行います。(5)と(6)の順番に注意してください。ここではさらに行列を入れ替えて貼り付けています。
貼り付けの対象となる引数Pasteに指定できる定数はExcelのバージョンによって異なります。詳細は使用するバージョンのヘルプ、オブジェクトブラウザを確認してください。
(※)Excel 2000で形式を選択して貼り付けをマクロ記録すると、「入力規則」の貼り付けはxlDataValidation、「列幅」の貼り付けはxlColumnWidthsという定数として記録されます。しかし実際には値が定義されていないため、実行するとエラーになります。これらの引数については、値で指定すると良いでしょう。