【初心者向け】形式を選択して貼り付ける方法!【結論:PasteSpecialを使いましょう】
こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!
今回はこのような悩みについて解説します。
VBAで形式を選択して貼り付けってできるの??
はじめに
結論から先に言うと、VBAでVBAで形式を選択して貼り付けたい場合は「PasteSpecialメソッド」を使いましょう!
早速この「PastesSecialメソッド」でどのような処理が行われるのか見ていきましょう。
Sub Sample1()
Range("B2:D4").Copy
Range("B6").PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
End Sub
これは全てを選択して、貼り付けた場合の結果です。
このようにExcelで用意されている貼り付け機能をマクロ機能を使って実行することができます。
この記事では「PasteSpecialメソッド」の使い方について詳しく解説しています。
よかったら最後まで見てください!
PasteSpecialメソッドとは
この「PasteSpecial」とは簡単に言うと、メソッドの一つで、データを貼り付ける時の命令になります。
Object.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
アルファベットがずらっと並んでいてわかりづらいですね笑
「Object」とよく使われる引数の「Paste」についてはしっかり理解する価値があるので詳しく解説します!
Object
まずはObjectです。これは対象という意味でどのオブジェクトに対して有効なのかを示しています。
「PasteSpecialメソッド」にはRangeオブジェクトが有効です。(下表参考)
Rangeオブジェクトとは「A1」などセルを対象にすることができるオブジェクトです。
よく間違える認識として、貼り付けだから「Pasteメソッド」を使えばいいんだと思われていることです。
「Pasteメソッド」のオブジェクトはWorksheetオブジェクトになりますので、ここは絶対に間違えないようにしましょう!
設定項目 | 内容 |
---|---|
Object | Rangeオブジェクト |
Paste | 何を貼り付けるかを指定します(下表参照)[省略可能] |
Operation | 演算して貼り付けの際の演算方法を指定します(下表参照)[省略可能] |
SkipBlanks | 空白セルを無視する(True)、無視しない(False:既定値)[省略可能] |
Transpose | 行列を入れ替える(True)、入れ替えない(False:既定値)[省略可能] |
Paste
次に第一引数である「Paste」についてです。
ここにはどのような形式で貼り付けるかを記入します。
具体的には下記の表のような項目があるので該当するものを選んで、
「paste:=」のあと定数を記入してください。
Range("A1").PasteSpecial Paste:=xlPasteAll
↑全ての場合はこんな感じです。
貼り付け対象 | 定数 | 値 | バージョン |
---|---|---|---|
すべて | xlPasteAll(既定) | -4104 | |
数式 | xlPasteFormulas | -4123 | |
値 | xlPasteValues | -4163 | |
書式 | xlPasteFormats | -4122 | |
コメント | xlPasteComments | -4144 | |
入力規則 | xlPasteValidation | 6 | 2002以降(※) |
罫線を除く全て | xlPasteAllExceptBorders | 7 | |
列幅 | xlPasteColumnWidths | 8 | 2002以降(※) |
数式と数値の書式 | xlPasteFormulasAndNumberFormats | 11 | 2002以降 |
値と数値の書式 | xlPasteValuesAndNumberFormats | 12 | 2002以降 |
コピー元のテーマを使用してすべて貼り付け | xlPasteAllUsingSourceTheme | 13 | 2007以降 |
すべての結合されている条件付き書式 | xlPasteAllMergingConditionalFormats | 14 | 2010以降 |
その他の引数
他の引数としては「Paste」以外にも「Operation」、「SkipBlanks」、「Transpose」があります。
正直そこまで使うことがありませんので、ざっくりと解説します。
「Operation」は貼り付けた時にもともとデータが入力されている場合そのデータに対して演算を行ってくれます。
簡単に言うと「A1」に1が入っていて、「A1」をコピーし、「A1」に加算形式で貼り付けると値が2になるといった感じです。
「SkipBlanks」はコピーした範囲に値が入っていないセルがある場合、そのセルだけは罫線や背景色もコピーされないという貼り付け形式です。
「Transpose」は貼り付け時に行と列を入れ替えることができます。
これらは覚えておく必要はないのでこんなことできるんだなぐらいの認識にでOKです!
まとめ
今回は「PasteSpecial」について解説しました。
個人的には転記作業でかなり使う場面が多く、知っていると便利なメソッドだと思います。
値を直接代入した方が早く処理できる場面などもありますので色々試しながら使ってみてください!
この記事で少しでも皆さんのお役に立てれば幸いです!
忘れないうちにお気に入り登録もお願いします!
ありがとうございました!
コメントはお気軽に!