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

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

皆さんは、VBAで形式を選択してコピーした値を張り付ける方法を知っていますか? コピーしたセルの値のみ使いたい場合、書式のみコピーしたい場合など形式を選択して貼り付けたいケースはよくありますよね。

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

そこで今回は、

  • PasteSpecialメソッドの使い方
  • PasteSpecialメソッドを使ったサンプルコード
  • 合わせて覚えると便利なCopyメソッドの使い方
  • VBAでコピペする方法3選

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

PasteSpecialメソッドの使い方とは

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

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

使い方:

Range("セル名").PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

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

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つ指定した場合、複数指定した場合のサンプルを用意しています。

実行前のセルのデータ:

サンプルコード:

  Dim intFirstPasteVal As Integer
  Dim intSecondPasteVal As Integer
  Dim intThirdPasteVal As Integer
  
  Range("A1").Copy
      
  '1回目:値のみをA2セルに貼り付け
  Range("A2").PasteSpecial Paste:=xlPasteValues
  intFirstPasteVal = Range("A2").Value
  
  '2回目:値を加算してをA2セルに貼り付け
  Range("A2").PasteSpecial Paste:=xlPasteValues, _
                       Operation:=xlPasteSpecialOperationAdd
  intSecondPasteVal = Range("A2").Value
  
  '3回目:書式のみをB3セル貼り付け
  Range("B3").PasteSpecial Paste:=xlPasteFormats
  intThirdPasteVal = Range("B3").Value
    
  'メッセージでコピー後のセルの値を表示
  MsgBox "1回目のコピー後のA2セルの値:" & intFirstPasteVal & vbCrLf & _
         "2回目のコピー後のA2セルの値:" & intSecondPasteVal & vbCrLf & _
         "3回目のコピー後のB3セルの値:" & intThirdPasteVal

  'コピーモードを解除
  Application.CutCopyMode = False

実行結果:

実行後のセルのデータ:

1回目のコピーでは、A1セルをA2セルにコピーしています。2回目のコピーでは、加算してコピーでA1セルの値をA2セルにコピーしているため、A2セルの値が20になっています。3回目のコピーでは、A1セルののみB3セルにコピーしています。このように、簡単に形式を選択して貼り付けることができます。

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

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

Copyメソッドを使用すると、そのセル範囲の情報を、クリップボード(一時的なデータの保存領域)へコピーすることができます。先ほどのサンプルでは、そうして取得した情報を、PasteSpecialメソッドを使用して貼り付けているわけですね!

Copyメソッドの使い方:

セル範囲.Copy

サンプルコード:

Sub Test()
  Range("A1").Copy
End Sub

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

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

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

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

方法1:

Sub Test()
  'シートを選択  
  Worksheets("Sheet1").Select

  'セルをコピペ
  Range("A1").Copy
  Range("A2").Select
  ActiveSheet.Paste

  'コピーモード解除
  Application.CutCopyMode = False
End Sub

方法2:

Sub Test()
  'セルをコピペ
  Worksheets("Sheet1").Range("A1").Copy Destination:=Worksheets("Sheet1").Range("A2")

  'コピーモード解除
  Application.CutCopyMode = False
End Sub

方法3:

Sub Test()
  'セルのコピペ
  Worksheets("Sheet1").Range("A1").Copy
  Worksheets("Sheet1").Range("A2").PasteSpecial Paste:=xlPasteAll

  'コピーモード解除
  Application.CutCopyMode = False
End Sub

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

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

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

まとめ

今回は、VBAでPasteSpecialメソッドを使ってセルのデータを張り付ける方法について解説しました。形式を選択して貼り付けるケースはよくあります。SpecialPasteメソッドの使い方は簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。