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再入門」の記事

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


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

文字列結合&でコンパイルエラーになる理由|VBA技術解説(9月19日)
Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)


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

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



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

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


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




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