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

 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種類のみですので、組み合わせて使う際にはこの例のように
複数回実行してください。

Excel2000



戻る


Excel Word Access VBA! モーグ