【初心者向け】形式を選択して貼り付ける方法!【結論: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オブジェクトになりますので、ここは絶対に間違えないようにしましょう!

スクロールできます
設定項目内容
ObjectRangeオブジェクト
Paste何を貼り付けるかを指定します(下表参照)[省略可能]
Operation演算して貼り付けの際の演算方法を指定します(下表参照)[省略可能]
SkipBlanks空白セルを無視する(True)、無視しない(False:既定値)[省略可能]
Transpose行列を入れ替える(True)、入れ替えない(False:既定値)[省略可能]
参考:mougモーグ

Paste

次に第一引数である「Paste」についてです。

ここにはどのような形式で貼り付けるかを記入します。

具体的には下記の表のような項目があるので該当するものを選んで、

「paste:=」のあと定数を記入してください。

Range("A1").PasteSpecial Paste:=xlPasteAll

↑全ての場合はこんな感じです。

スクロールできます
貼り付け対象定数バージョン
すべてxlPasteAll(既定)-4104
数式xlPasteFormulas-4123
xlPasteValues-4163
書式xlPasteFormats-4122
コメントxlPasteComments-4144
入力規則xlPasteValidation62002以降(※)
罫線を除く全てxlPasteAllExceptBorders7
列幅xlPasteColumnWidths82002以降(※)
数式と数値の書式xlPasteFormulasAndNumberFormats112002以降
値と数値の書式xlPasteValuesAndNumberFormats122002以降
コピー元のテーマを使用してすべて貼り付けxlPasteAllUsingSourceTheme132007以降
すべての結合されている条件付き書式xlPasteAllMergingConditionalFormats142010以降
参考:mougモーグ

その他の引数

他の引数としては「Paste」以外にも「Operation」、「SkipBlanks」、「Transpose」があります。

正直そこまで使うことがありませんので、ざっくりと解説します。

「Operation」は貼り付けた時にもともとデータが入力されている場合そのデータに対して演算を行ってくれます。

簡単に言うと「A1」に1が入っていて、「A1」をコピーし、「A1」に加算形式で貼り付けると値が2になるといった感じです。

「SkipBlanks」はコピーした範囲に値が入っていないセルがある場合、そのセルだけは罫線や背景色もコピーされないという貼り付け形式です。

「Transpose」は貼り付け時に行と列を入れ替えることができます。

これらは覚えておく必要はないのでこんなことできるんだなぐらいの認識にでOKです!

まとめ

今回は「PasteSpecial」について解説しました。

個人的には転記作業でかなり使う場面が多く、知っていると便利なメソッドだと思います。

値を直接代入した方が早く処理できる場面などもありますので色々試しながら使ってみてください!

この記事で少しでも皆さんのお役に立てれば幸いです!

忘れないうちにお気に入り登録もお願いします!

ありがとうございました!

/// お得な情報 ///

すぐに使えて便利なテクニックが650個も手に入る!

気になる人は今すぐクリック!!

 

目次