【ExcelVBA入門】PasteSpecialメソッドで形式を選択して貼り付ける方法

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで形式を選択してコピーした値を張り付ける方法を知っていますか?

コピーしたセルの値のみ使いたい場合、書式のみコピーしたい場合など形式を選択して貼り付けたいケースはよくありますよね。

PasteSpecialメソッドを使えば、簡単に形式を選択して貼り付けることができます。

そこで今回は、

・PasteSpecialメソッドの使い方

といった基礎的なことから、

・PasteSpecialメソッドを使ったサンプルコード

・合わせて覚えると便利なCopyメソッドの使い方

・VBAでコピペする方法3選

といった応用的な方法まで、徹底的に解説します!

PasteSpecialメソッドの使い方とは

はじめに、PasteSpecialメソッドの使い方について解説します。

PasteSpecialメソッドは次のように使います。

使い方:

引数の使い方は表にまとめました。

No引数意味
1Paste貼り付ける方法を指定
2Operation演算して貼り付ける場合の演算方法を指定
3SkipBlanks空白セルを無視するか指定
4Transpose行列入れ替えを指定

Paste、Operationについては指定する値が多いため、それぞれ表にまとめています。

・Paste

No意味
1xlPasteAll (規定値)全て
2xlPasteFormulas数式
3xlPasteValues
4xlPasteFormats書式
5xlPasteFormulasAndNumberFormats数式と数値の書式
6xlPasteValuesAndNumberFormats値と数値の書式
7xlPasteValidation入力規則
8xlPasteCommentsコメント
9xlPasteColumnWidths列幅
10xlPasteAllExceptBorders罫線を除く全て
11xlPasteAllUsingSourceThemeコピー元のテーマを使用してすべて貼り付け
12xlPasteAllMergingConditionalFormatsすべての結合されている条件付き書式

・Operation

No意味
1xlPasteSpecialOperationNone(既定)しない(規定値)
2xlPasteSpecialOperationAdd加算
3xlPasteSpecialOperationSubtract減算
4xlPasteSpecialOperationMultiply乗算

量が多くて覚えるのが難しいと感じるかもしれませんが、いきなりすべて覚える必要はありません

サンプルコードでPasteSpecialメソッドの使い方を一旦覚えてから、用途に応じて表を見て書き換えればOKです。

サンプルコード

次に、サンプルコードをもとに具体的な使い方を解説します。

引数を1つ指定した場合、複数指定した場合のサンプルを用意しています。

実行前のセルのデータ:

サンプルコード:

実行結果:

実行後のセルのデータ:

1回目のコピーでは、A1セルをA2セルにコピーしています。

2回目のコピーでは、加算してコピーでA1セルの値をA2セルにコピーしているため、A2セルの値が20になっています。

3回目のコピーでは、A1セルの書式のみB3セルにコピーしています。

このように、簡単に形式を選択して貼り付けることができます。

合わせて覚えると便利なCopyメソッドの使い方とは

ここまでPasteSpecialメソッドの使い方をメインに解説してきましたが、CopyメソッドPasteSpecialメソッドを使う上で必須の知識なので、合わせて覚えておくのがおすすめです!

Copyメソッドを使用すると、そのセル範囲の情報を、クリップボード(一時的なデータの保存領域)へコピーすることができます。

先ほどのサンプルでは、そうして取得した情報を、PasteSpecialメソッドを使用して貼り付けているわけですね!

Copyメソッドの使い方:

サンプルコード:

以下で詳しく解説しているので、ぜひ見てみてくださいね!

VBAでセル・シート・ファイルをコピー(値、書式のみも解説)
更新日 : 2019年4月21日

補足:VBAでコピペする方法3選

PasteSpecialメソッドは形式を選択して貼り付ける方法ですが、セルのデータをコピペする方法全部で3パターンあります。

方法1:

方法2:

方法3:

全てA1セルのデータをA2セルにコピーする処理ですが、一番速度が速い方法が「方法2」なので、形式を選択してコピーしない場合は「方法2」を使うのがおすすめです!

ちなみに、処理速度の確認方法は以下で詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】処理時間を計測するためのTimer関数の使い方とは
更新日 : 2019年5月3日

まとめ

今回は、VBAでPasteSpecialメソッドを使ってセルのデータを張り付ける方法について解説しました。

形式を選択して貼り付けるケースはよくあります。

SpecialPasteメソッドの使い方は簡単なので、ぜひ使ってみてくださいね!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説