セルの特定の要素のみをペーストする(PasteSpecial メソッド)
2015/08/26
PasteSpecial メソッド
PasteSpecial メソッドは、Copy メソッドでコピーされたワークシート上の任意のセル・セル範囲の内容の特定の要素のみ(「値のみ」「列幅のみ」「書式のみ」など)をペーストする時に使用します。
Object.PasteSpecial ( [ paste, operation, skipblanks, transpose ] )
引数・戻り値
- object ・・・ 対象となるRange オブジェクト
- paste ・・・ 貼り付ける要素を XlPasteType 列挙型 の定数で指定します。(下表参照)
- operation ・・・ 計算を伴う貼り付けの場合の計算方法を XlPasteSpecialOperation の定数で指定します。(下表参照)
- skipblanks ・・・ クリップボードに含まれる空白のセルを貼り付けの対象にしないようにするには、True を指定します。既定値は False です。
- transpose ・・・ 行と列を入れ替えて貼り付けるには、True を指定します。既定値は False です。
引数 paste(XlPasteType 列挙型の定数)
定数 | 値 | 内容 |
xlPasteValues | -4163 | 値のみ |
xlPasteComments | -4144 | コメントを貼り付けます。 |
xlPasteFormulas | -4123 | 数式を貼り付け |
xlPasteFormats | -4122 | コピーしたソースの形式を貼り付け |
xlPasteAll | -4104 | すべてを貼り付け |
xlPasteValidation | 6 | 入力規則を貼り付け |
xlPasteAllExceptBorders | 7 | 輪郭以外のすべてを貼り付け |
xlPasteColumnWidths | 8 | コピーした列の幅を貼り付け |
xlPasteFormulasAndNumberFormats | 11 | 数式と数値の書式を貼り付け |
xlPasteValuesAndNumberFormats | 12 | 値と数値の書式を貼り付け |
xlPasteAllUsingSourceTheme | 13 | ソースのテーマを使用してすべてを貼り付け |
xlPasteAllMergingConditionalFormats | 14 | すべてを貼り付け、条件付き書式をマージ |
引数 operation(XlPasteSpecialOperationの定数)
定数 | 値 | 内容 |
xlPasteSpecialOperationNone | -4142 | 計算は行われない |
xlPasteSpecialOperationAdd | 2 | 加算 |
xlPasteSpecialOperationSubtract | 3 | 減算 |
xlPasteSpecialOperationMultiply | 4 | 乗算 |
xlPasteSpecialOperationDivide | 5 | 除算 |
引数 paste には1つの要素しか指定することができないので、複数の要素をコピーしたい場合は、その要素ごとに、PasteSpecial メソッドを実行します。
(例)列幅と書式をペースト
Range(“A1”).copy
Range(“B1”).PasteSpecial xlPasteColumnWidths
Range(“B1”).PasteSpecial xlPasteFormats
書式が文字列であったり、先頭に「’」シングルコーテーションマークがついた数値が入力されているセルに対して、「空白セル」をコピーして、PasteSpecial メソッドで、引数 operation に、xlPasteSpecialOperationAdd を指定してその数値が入力されたセルにペーストすると、標準の書式に変更され、「’」シングルコーテーションマークも取り除かれます。
PasteSpecial メソッドの使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Sub Sample_PasteSpecial() '「A1」セルから「E1」セルをコピー Range("A1:E1").Copy '「A3」セルへペースト(「値のみ」「空白セル対象外」「行列入れ替える」) Range("A3").PasteSpecial , _ Paste:=xlPasteValues, _ skipblanks:=True, _ Transpose:=True '「G1:H1」セルは、シングルコーテーション(')が付いた数値(文字列) '「I1」セルは、書式が文字列 '「M1」セルは空白セル '「M1」セルをコピー Range("M1").Copy '「A10」セルへペースト(「全て」、「加算して貼り付け」) Range("G1:L1").PasteSpecial , xlPasteSpecialOperationAdd '「G1」セルから「L1」セルをコピー Range("G1:L1").Copy '「G10」セルから「L10」へペースト(「減算して貼り付け」) Range("G10:L10").PasteSpecial operation:=3 '「G11」セルへペースト(「値」「数値数式の書式」) Range("G11").PasteSpecial Paste:=xlPasteValues Range("G11").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats 'コピーモード解除 Application.CutCopyMode = False End Sub |
実行結果
サンプルVBA実行前
サンプルVBA実行後
関連記事
-
文字列の縦位置を取得・設定する(VerticalAlignment プロパティ)
VerticalAlignment プロパティ VerticalAlignmen …
-
フリガナ(Phonetic プロパティ)
Phonetic プロパティ 文字列(漢字など)をキーボードから入力した時の「読 …
-
セル内の編集を禁止する(EditDirectlyInCell プロパティ)
EditDirectlyInCell プロパティ エクセルでは、セルをダブルクリ …
-
セルをアクティブにする・セルを選択する(Activate, Select)
セルをアクティブにする・選択する 【書式:セルをアクティブにする】 object …
-
数式を設定・取得する(Formula プロパティ・FormulaR1C1 プロパティ)
Formula プロパティ(FormulaR1C1 プロパティ) Formula …
-
セルが結合セルの一部である場合、その結合セルの範囲を取得(MergeArea プロパティ)
MergeArea プロパティ MergeArea プロパティは、指定したセルが …
-
配列数式を取得または設定する(FormulaArray プロパティ)
FormulaArray プロパティ FormulaArray プロパティは、対 …
-
列名を取得、列番号を取得(Address プロパティ,Column プロパティ)
列番号を取得する セル番地(「A1」や「B3」)や列名(「A」「B」「C」 …
-
セルが選択されているか確認する(TypeName 関数)
セルが選択されているか確認する方法と使用例 TypeName 関数の引数に、Se …
-
セルの行番号または列番号を取得(Row プロパティ,Column プロパティ)
Row プロパティ・Column プロパティ Row プロパティは、指定したセル …