VBA再入門
セルのコピペ方法を知る(CopyとPaste、さらに)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
公開日:2015-09-21 最終更新日:2020-09-26

第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:=xlPasteFormats ・・・ 書式

この自動記録されたマクロ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("A1").Valueでセルの値を取得し、Range("C3").Valueに設定しています。

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

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

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


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

「セルのコピペ方法を知る」のまとめ

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

セルのコピペ
コピー元.Copy Destination:=貼り付け先
※貼り付け先は先頭セルを指定。
値のコピー
貼り付け先.Value = コピー元.Value
※貼り付け先とコピー元は同じ大きさのセル範囲を指定

ExcelマクロVBA入門等の対応ページ

第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)
・セルをコピー(複写)する場合 ・セルを切り取る(移動する)場合 ・セル範囲のコピーについて ・別のシートにコピーする場合 ・アクティブシート以外へのコピー ・セルのコピーについてのサイト内参考ページ

第41回.セルのコピー&値の貼り付け(PasteSpecial)
・PasteSpecialメソッド ・値の貼り付け ・いろいろなコピーのVBAの書き方 ・PasteSpecialの使用例 ・最後に

第42回.セルをコピーするとは
・セルをコピーするとは ・上記方法ではコピーできないプロパティ ・.Valueのセル範囲間のコピー ・.Value以外の場合は、セル範囲をセル範囲にコピーは出来ません ・コピー方法の使い分け ・セルのコピー(Copyメソッド)実行時の注意点 ・最後に



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

第10回.ワークシートの関数を使う(WorksheetFunction)

・マクロVBAでのワークシート関数の使い方 ・長いスペルの単語を簡単に入れる方法 ・ワークシート関数を使ってみよう ・ワークシート関数を使う時の注意点、エラー対策 ・ExcelマクロVBA入門等の対応ページ
第11回.分からない事はエクセルに聞く(マクロの記録)
・マクロの記録の使い方 ・実際に分からない事を調べる時の手順 ・「分からない事はエクセルに聞く」のまとめ ・ExcelマクロVBA入門等の対応ページ
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
・VBAが表示するメッセージ ・オブジェクト、プロパティ、メソッド ・プロパティとメソッドの違い ・オブジェクトの階層(親子構造) ・プロパティの省略 ・エクセルの言葉であるVBAを日本語に翻訳する ・最終行取得のコードを訳してみる ・VBA用語を覚えることについて ・ExcelマクロVBA入門等の対応ページ
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)
・「セルの書式設定」ダイアログ画面 ・表示形式 ・フォント ・罫線 ・塗りつぶし ・「セルの書式を設定する」のまとめ ・ExcelマクロVBA入門の対応ページ
第15回.手作業で出来なければマクロは書けない
・エクセルの機能を知る ・ワークシート関数を知る ・「手作業で出来なければマクロは書けない」のまとめ ・ExcelマクロVBA入門の対応ページ
第16回.エクセルの機能を上手に使う
・エクセルの機能を使った例 ・普通にマクロVBAを書くと ・C2セルに計算式を入れ、フィルハンドルをダブルクリックでオートフィル ・C2セルに計算式を入れ、C2セルをコピー、C3~C11を選択し貼り付け ・C2~C11を選択し、計算式を入力しCtrl+Enterで一括入力 ・マクロの記録を参考にVBAを書いてみると、 ・どのエクセル機能を使うかを考える ・並べ替え ・オートフィルター ・エクセルの機能を上手に使う ・ExcelマクロVBA入門の対応ページ
第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
・ブックの書き方 ・シートの書き方 ・セルにブック・シートを指定する方法 ・直接指定 ・Withを使う ・Setを使う ・SetとWithを組み合わせて使う ・ExcelマクロVBA入門の対応ページ
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
・シートのコピー ・シートの挿入 ・シートの削除 ・メソッドの戻り値 ・ExcelマクロVBA入門の対応ページ
第19回.ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)
・ブック(Excelファイル)のパス(場所)を特定する ・ブックを開く ・ブックを閉じる ・上書き保存 ・名前を付けて保存 ・保存形式(ファイルの種類)について ・ExcelマクロVBA入門の対応ページ
第20回.全てのシートに同じ事をする(For~Worksheets.Count)
・シートの指定方法 ・全シートの「印刷の向き」を「横」に設定します。 ・シート名に"横"と入っているシートだけ「印刷の向き」を「横」に設定します ・シート名に"削除"と入っていたらシートを削除する ・For Eachについて ・ExcelマクロVBA入門の対応ページ


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

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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


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