VBA入門
セルのコピー・カット&ペースト(Copy,Cut,Paste)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2025-04-17

第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)


あるセルをコピーまたはカットして、別のセルに貼り付けるマクロVBAの説明です。


セルを同じシートの別のセルにコピーしたり、セルを別のシートにコピーしたりするVBAになります。

手作業で、
セルをコピー(Ctrl+C)またはカット(Ctrl+X)して、他のセルに貼り付け(Ctrl+V後にESCまたはEnter)
これと同じ動作をするマクロVBAになります。


セルをコピー(複写)する場合

A1セルをB1セルにコピー貼り付けする場合

Range("A1").Copy
Range("B1").Select
ActiveSheet.Paste
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

このように記述します。

Range("A1").Copy
これはA1セルをクリップボードにコピーします。

Range("B1").Select
ActiveSheet.Paste
アクティブシートのB1セルに貼り付けます。

Range("C1").Select
ActiveSheet.Paste
アクティブシートのC1セルに貼り付けます。
この記述方法ではアクティブシートのアクティブセル以外には、貼り付けできません。

Application.CutCopyMode = False
コピーモード(セルの周りが点々の状態)を解除します。

セル範囲を指定できます。
例."A1:C5"

あまり必要性は無いと思いますが、離れた複数箇所のセル範囲は基本的には指定できません。
例."A1:B10,C11:D20"
これについては、下で詳しく説明します。


セルを切り取る(移動する)場合

A1セルをB1セルにカット貼り付けする場合

Range("A1").Cut
Range("B1").Select
ActiveSheet.Paste

Range("A1").Cut
A1セルを切り取りします。

Range("B1").Select
ActiveSheet.Paste
アクティブシートのB1セルに貼り付けます。
A1セルは、クリアされた(初期)状態になります。

Cutの場合はCopyと違い、Paste(貼り付け)した時点で、
コピーモード(セルの周りが点々の状態)が解除されます。
つまり、繰り返し貼り付けはできないという事になります。

セル範囲を指定できます。
例."A1:C5"

あまり必要性は無いと思いますが、離れた複数箇所のセル範囲は基本的には指定できません。
例."A1:B10,C11:D20"
これについては、下で詳しく説明します。


セル範囲のコピーについて

Range("A1:B10").Copy ・・・ ○
Range("A1,B5").Copy ・・・ ×
Range("A1,B5,C10").Copy ・・・ ×
Range("A1:B10,C11:D20").Copy ・・・ ×

上記の×は実行できません。
複数のセル範囲(離れた場所にあるセル範囲)はCopyはできません。

※行範囲が同じであったり列範囲が同じ場合は、複数範囲でもコピーできます。
例えば、
Range("A1:B10,D1:E10").Copy
これならコピーできます。

これらの違いは、シート上で実際にやってみれば直ぐに分かります。
ただし、マクロで処理する場合は、
複数範囲なら複数回(VBAを複数行に分けて記述して)に分ければ良いので、
実際にマクロVBAで使う必要はないでしょう。


別のシートにコピーする場合

Range("A1").Copy
Sheets("シート名").Select
Range("B1").Select
ActiveSheet.Paste
Application.CutCopyMode = False 

このように、
シート選択すれば良い事は直ぐに理解できる事と思います。

しかし、
いずれにしてもアクティブシートにしか貼り付けできないのは不便です。
以下のように書く事で、アクティブシート以外にもコピーできます。


アクティブシート以外へのコピー

Sheets("シート名1").Range("セル番地").Copy Destination:=Sheets("シート名2").Range("セル番地")

Destination:=
これは、名前付き引数です。
引数が1つなので、引数名は省略してもよいでしょう。

Copy Destinationの使用例

Sheets("Sheet1").Range("A1").Copy Sheets("Sheet2").Range("A1")

また、.Cutで切り取りも使用できます。

Sheets("Sheet1").Range("A1").Cut Sheets("Sheet2").Range("A1")

コピー方法は、アクティブシートへのコピーでも使えます。
従って、
マクロVBAでは、アクティブシート以外へのコピー

Sheets("シート名1").Range("セル番地").Copy Destination:=Sheets("シート名2").Range("セル番地")

これだけを覚えて使用するようにすれば良いでしょう。

このDestinationを指定したマクロVBAのCopyは、
セルの境界をクリックし、Ctrlを押しながらドラッグ&ドロップ
この操作をマクロ記録した時のVBAコードになります。

マクロ VBA セルのコピー

セルの境界にマウスカーソルを当てると、
マクロ VBA セルのコピー
この形になります。
Ctrlを押すと下の形状になります。
マクロ VBA セルのコピー

Ctrlキーを押したままドラッグ&ドロップ
※ドロップの時点で、Ctrlが押されていればコピー、Ctrlが押されていなければ移動になります。

実際に「マクロの記録」で、いろいろなコピーのVBAコードを確認してみてください。


可視セルのみコピー

非表示の行・列がある場合、セルの選択コピーにおいて非表示セルがコピーされたりコピーされなかったりします。
この非表示セルがコピーされるかコピーされないかの挙動については、
・行または列の非表示
・フィルターの絞り込み
・テーブルのフィルターの絞り込み
これらによって挙動が違ってきます。
以下で詳しく解説しています。
可視セルのみ選択コピー(テーブルは要注意)
・非表示行、非表示列 ・フィルター ・テーブル


セルのコピーについてのサイト内参考ページ

以下も参考にしてください。

第13回.セルのコピペ方法を知る(CopyとPaste、さらに)|マクロVBA再入門
・セルをコピーして貼り付け ・セルをコピーして値貼り付け ・セルをコピーして書式貼り付け ・PasteSpecial(値貼り付け、書式貼り付け等)の細かい指定 ・もっと簡単なコピペ方法はないものか ・もっと効率的な「セルをコピーして貼り付け」 ・マクロならではの「値のコピー」 ・「セルのコピペ方法を知る」のまとめ ・ExcelマクロVBA入門等の対応ページ
第6回.別のシートにコピーする|マクロ記録でVBA
前回作成した100マスを別のシートにコピーしてみましょう。ここでは、「Sheet1」に100マスがあり、それを「Sheet2」へコピーします。いまは、「Sheet1」が開いていて、セルA1がアクティブになっています。




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

第36回.総合練習問題4
第37回.ブック・シートの指定
第39回.セルのクリア(Clear,ClearContents)
第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)
第41回.セルのコピー&値の貼り付け(PasteSpecial)
第42回.セルをコピーするとは
第43回.総合練習問題5
第44回.VBA関数について
第45回.VBA関数(Format)
第46回.VBA関数(日付,DateAdd)
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)


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

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




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


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



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