PasteSpecialメソッドを使用すると、マニュアル操作による「形式を選択して貼り付け」
の機能のほぼ全てを実現します。
例外は「リンク貼り付け」で、この場合はPasteメソッドを使用します。引数Pasteが
「貼り付け」、Operationが「演算」の各項目に対応しています。次に示す表で確認
してください。
構文 Object.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
設定項目 内容
Object Rangeオブジェクト
Paste 何を貼り付けるかを指定します(下表参照)[省略可能]
Operation 演算して貼り付けの際の演算方法を指定します(下表参照)[省略可能]
SkipBlanks 空白セルを無視する(True)、無視しない(False:規定値)[省略可能]
Transpose 行列を入れ替える(True)、入れ替えない(False:規定値)[省略可能]
●表A「貼り付け」対象と引数「Paste」に使用する定数との対応表
(xlPaste クラス)
貼り付け対象 定数 値 EXCEL97での定数
すべて xlPasteAll -4104 xlPasteAll
数式 xlPasteFormulas -4123 xlPasteFormulas
値 xlPasteValues -4163 xlPasteValues
書式 xlPasteFormats -4122 xlPasteFormats
コメント xlPasteComments -4144 xlPasteComments
入力規則 xlDataValidation ※1 ※2 6 xlPasteAllExceptBorders
罫線を除く全て xlPasteAllExceptBorders ※2 7 7
列幅 xlColumnWidths ※1 8 なし
※1 マクロ記録時のみ使用される定数(実行するとエラー)
※2 EXCEL97との互換性に問題あり
●表B「演算」方法と引数「Operation」に使用する定数との対応表
(xlPasteSpecial クラス)
演算 定数 値
しない xlPasteSpecialOperationNone -4142
加算 xlPasteSpecialOperationAdd 2
減算 xlPasteSpecialOperationSubtract 3
乗算 xlPasteSpecialOperationMultiply 4
除算 xlPasteSpecialOperationDivide 5
定数が用意されている引数に関しては、コードの可読性から定数を使うことが一般的
です。しかしPasteSpecialメソッドの引数「Paste」のうち、※1の印をつけている定数
は、マクロ記録時には定数として記録されますが、実際には値が定義されていないため
に、実行するとエラーになります。また※2を付けているものについては、EXCEL97との
互換性に問題があります。これらの引数に関しては値で指定することをおすすめします。
例としてB列には何行目かを返すRow関数が入力されており、C列の値は、B列の値を10
倍、また、セルの塗り潰し、文字列の色、文字列を太字、罫線といった書式が設定して
あるとします
●サンプル●
Sub PasteSpacialSamp1()
Range("B2").CurrentRegion.Copy
Range("E2").PasteSpecial Paste:=xlPasteValues, _
Transpose:=True '-----(1)
Range("E2").PasteSpecial Paste:=8, _
Transpose:=True '-----(2)
End Sub
セルB2のアクティブセル領域の値を、行列を入れ替えてE2を先頭とするセル範囲に貼り
付けます。(1)のステートメントで「値」貼り付けと行列の入れ替え、(2)のステートメン
トで、列幅の複写と行列の入れ替えを行っています。(2)のステートメントの引数Pasteが
数字の8になっていることを確認してください。
各引数で指定できるのは1種類のみですので、組み合わせて使う際にはこの例のように
複数回実行してください。
|