ExcelマクロVBA再入門
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2016-03-29

第13回.セルのコピペ方法を知る(CopyとPaste、さらに)


エクセルVBAでは、セルをコピーして他のセルに貼付けることが多くあります、


セルをコピーして貼り付け、

セルをコピーして値貼り付け、

セルをコピーして書式貼り付け、等々、

これらを必要に応じて、使い分ける必要があります。

シートでの実際の操作に照らして、コピーのVBAコードを見ていきましょう。


実際に、マクロの記録をして確認しましょう。


■セルをコピーして貼り付け

・A1セルをコピー
・A2セルに貼付け
・ESCでコピー状態を解除


エクセル マクロ VBAコード

キーワードとしては、
.Copy ・・・ コピー
.Paste ・・・ 貼り付け

Application.CutCopyMode = False ・・・ コピー状態の解除
ここで、
マクロVBAでは多くの場合セルのSelectは不要です。
しかし、貼り付け先(Paste)のセルは選択しておく必要があります。
従って、

エクセル マクロ VBAコード

これでセルのコピーが出来ます。


■セルをコピーして値貼り付け

・A1セルをコピー
・A2セルに値貼付け
・ESCでコピー状態を解除


エクセル マクロ VBAコード
※画像の都合で、改行位置を変更しています。

キーワードとしては、
.Copy ・・・ コピー
.PasteSpecial ・・・ 形式を選択して貼り付け

Paste:=xlPasteValues ・・・ 値
ここで、
前述のように、マクロVBAでは多くの場合セルのSelectは不要です。
形式を選択して貼り付け(PasteSpecial)先のセルは選択しておく必要がありません。
さらに、
Operation:=xlNone
SkipBlanks:=False
Transpose:=False

この3つは、指定しない(指定を省略した)場合は、この指定と同じになりますので省略できます。
従って、

エクセル マクロ VBAコード

これで、値貼り付けが出来ます。


■セルをコピーして書式貼り付け

・A1セルをコピー
・A2セルに書式貼付け
・ESCでコピー状態を解除


エクセル マクロ VBAコード
※画像の都合で、改行位置を変更しています。

キーワードとしては、
.Copy ・・・ コピー
.PasteSpecial ・・・ 形式を選択して貼り付け

Paste:=xlPasteMarmats ・・・ 書式
ここで、
前述のように、マクロVBAでは多くの場合セルのSelectは不要です。
形式を選択して貼り付け(PasteSpecial)先のセルは選択しておく必要がありません。
さらに、
Operation:=xlNone
SkipBlanks:=False
Transpose:=False

この3つは、指定しない(指定を省略した)場合は、この指定と同じになりますので省略できます。
従って、

エクセル マクロ VBAコード

これで、書式貼り付けが出来ます。


■PasteSpecial(値貼り付け、書式貼り付け等)の細かい指定

以下の「形式を選択して貼り付け」画面と対比して考えると理解しやすくなります。

ショートカットはコピー後に、Ctrl + ALT + V

エクセル マクロ VBA参考画像

Paste ・・・ 貼り付け
Operation ・・・ 演算
SkipBlanks ・・・ 空白セルを無視する
Transpose ・・・ 行列を入れ替える


このように、それぞれに対応しています。
必要に応じて、マクロ記録を使って指定方法を調べれば良いです。


いずれも結構面倒、というか結構なVBAコードの行数が必要です。
ちょっと面倒・・・ですよね。
最もよく使う、
セルをコピーして貼り付け
セルをコピーして値貼り付け
この2つには、VBAにはもっと簡単な書き方があります。
順に紹介します。


■もっと効率的な「セルをコピーして貼り付け」

手作業でもコピーの仕方は色々あります。
Ctrlキーを押したままで、選択セルの境界をドラッグしてコピーできますよね。

エクセル マクロ VBA参考画像
セルの境界にカーソルを当てて、
エクセル マクロ VBA参考画像
Ctrlキーを押したままドラッグ&ドロップ

これをマクロの記録をすると、

エクセル マクロ VBAコード

何やら、これまでとは全く違ったVBAコードになりました。

Destinationは、目的地、行き先という意味の英単語です。
つまり、貼り付け先を一緒に指定していることになります。

「形式を選択して貼り付け」する必要が無く、
セルを単純にコピーするなら、この書き方の方が簡単なのは言うまでもありません。
そして、
セル選択は省略できますし、
Destination:=
も省略できます
ので、

エクセル マクロ VBAコード

これだけでもコピーできてしまいます。
ただし、できればDestination:=は書いた方が見やすいかもしれませんね。
複数セルの範囲の場合は、
コピー元は正しくセル範囲をしてしますが、
コピー先は、先頭セルだけ指定すれば良いです、
これは、シート上で手作業でやる場合と同じです。


■マクロならではの「値のコピー」

これは理屈抜きで、このように書けば、値のみコピーできると覚えて下さい。

エクセル マクロ VBAコード

Range("A1")のValueプロパティを、Range("C3")のValueに入れています。
Range("C3").Valueでセルの値を取得し、Range("A1").Valueに設定しています。

これは、複数セルの範囲でもできます。

エクセル マクロ VBAコード
※画像の都合で改行しています。

この場合は、
.Value
を省略できません。

以前に.Valueについて、
セル(Range、Cells)にプロパティ(Value)を書かなければ、.Valueが省略されたことになると書きましたが、
この場合だけ(他にも省略できない場合はあるにはありますが)は、.Valueを省略できないので、書き忘れないようにして下さい。
また、=の左辺(貼り付け先)と右辺(コピー元)は同じ大きさ(同じ行数列数)のセル範囲を指定する必要があります。
左辺が右辺より小さい場合は部分的にコピーされ、左辺が右辺より大きい場合ははみ出た部分が#N/Aとなります。


色々なコピー方法がありますが、
マクロVBAでは、最後に紹介した2つの書き方を覚えれば良いでしょう。
「形式を選択して貼り付け」は、マクロの記録でいつでも調べられますので。


セルのコピペ方法をまとめると、

セルのコピペ
コピー元.Copy Destination:=貼り付け先

※貼り付け先は先頭セルを指定。

値のコピー
貼り付け先.Value = コピー元.Value

※貼り付け先とコピー元は同じ大きさのセル範囲を指定




同じテーマ「マクロVBA再入門」の記事

ワークシートの関数を使う(WorksheetFunction)
分からない事はエクセルに聞く(マクロの記録)
エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
セルのコピペ方法を知る(CopyとPaste、さらに)
セルの書式を設定する(NumberFormatLocal,Font,Barders,Interior)
手作業で出来なければマクロは書けない
エクセルの機能を上手に使う
セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)
全てのシートに同じ事をする(For〜Worksheets.Count)

新着記事NEW ・・・新着記事一覧を見る

Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)

アクセスランキング ・・・ ランキング一覧を見る

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • セルのコピペ方法を知る(CopyとPaste、さらに)

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ