Excel VBA: PasteSpecial メソッドについて
VBAのPasteSpecialメソッドは、Excelのセル範囲に対して特殊貼り付けを行うためのメソッドです。このメソッドは引数を持つことが可能で、これにより貼り付けの種類や操作、スキップの設定等、多様なシナリオに対応できます。
基本的な使用法
PasteSpecialメソッドの最も基本的な使用法は以下の通りです:
Range.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
主な引数について
- Paste: 貼り付ける内容を指定します。可能な値は、xlPasteAll、xlPasteFormats、xlPasteFormulas等です。
- Operation: 貼り付けた値に対する演算を指定します。可能な値は、xlNone、xlMultiply、xlAdd等です。
- SkipBlanks: 空白セルをスキップするかどうかを指定します。TrueまたはFalseを指定します。
- Transpose: 行と列を転置して貼り付けるかどうかを指定します。TrueまたはFalseを指定します。
サンプルコード1
以下に、PasteSpecialメソッドを使用してセル範囲の値を別の場所に転置して貼り付ける基本的なVBAのSubプロシージャを示します。
Sub UsePasteSpecial()
Range("A1:C3").Copy
Range("E1").PasteSpecial Transpose:=True
Application.CutCopyMode = False
End Sub
このサンプルコードは”Range(“A1:C3”)”の範囲をコピーし、”Range(“E1”)”に対して転置して(Transpose:=True)貼り付けます。最後に、Application.CutCopyMode = Falseでコピーの選択範囲を解除します。
サンプルコード2
PasteSpecialメソッドは、貼り付けの操作をカスタマイズするためのパラメータを持っています。以下の例では、貼り付け操作に加算を使用しています。
Sub PasteSpecialAdd()
Range("A1:B2").Copy
Range("C1:D2").PasteSpecial Operation:=xlPasteSpecialOperationAdd
Application.CutCopyMode = False
End Sub
このコードは、”Range(“A1:B2”)”の範囲をコピーし、その値を”Range(“C1:D2”)”のセルの値に加算します。これは、貼り付け操作が単純な値の置き換えではなく、元のセルの値に対する算術演算を実行できることを示しています。この機能は、一連のセルに対して一括して計算を適用する際に特に便利です。