【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!

HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 形式を選択して貼り付ける(PasteSpecialメソッド)

形式を選択して貼り付ける(PasteSpecialメソッド)|Excel VBA

セル操作関連のテクニック

形式を選択して貼り付ける(PasteSpecialメソッド)

(Excel 2000/2002/2003/2007/2010/2013/2016)

マニュアル操作による「形式を選択して貼り付け」の機能のほぼ全てを実現します。例外は「リンク貼り付け」で、この場合はPasteメソッドを使用します。引数Pasteが「貼り付け」、Operationが「演算」の各項目に対応しています。次に示す表で確認してください。

構文 Object.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

設定項目内容
ObjectRangeオブジェクト
Paste何を貼り付けるかを指定します(下表参照)[省略可能]
Operation演算して貼り付けの際の演算方法を指定します(下表参照)[省略可能]
SkipBlanks 空白セルを無視する(True)、無視しない(False:既定値)[省略可能]
Transpose行列を入れ替える(True)、入れ替えない(False:既定値)[省略可能]

●表A「貼り付け」対象と引数「Paste」に使用する定数との対応表
(xlPasteType クラス)

貼り付け対象 定数 バージョン
すべてxlPasteAll(既定)-4104
数式xlPasteFormulas-4123
xlPasteValues-4163
書式xlPasteFormats-4122
コメントxlPasteComments-4144
入力規則xlPasteValidation62002以降(※)
罫線を除く全てxlPasteAllExceptBorders7
列幅xlPasteColumnWidths82002以降(※)
数式と数値の書式xlPasteFormulasAndNumberFormats112002以降
値と数値の書式xlPasteValuesAndNumberFormats122002以降
コピー元のテーマを使用してすべて貼り付けxlPasteAllUsingSourceTheme132007以降
すべての結合されている条件付き書式xlPasteAllMergingConditionalFormats 142010以降

●表B「演算」方法と引数「Operation」に使用する定数との対応表
(xlPasteSpecialOperation クラス)

演算定数
しない xlPasteSpecialOperationNone(既定) -4142
加算xlPasteSpecialOperationAdd2
減算xlPasteSpecialOperationSubtract3
乗算xlPasteSpecialOperationMultiply4
除算xlPasteSpecialOperationDivide5

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という定数として記録されます。しかし実際には値が定義されていないため、実行するとエラーになります。これらの引数については、値で指定すると良いでしょう。