VBA入門
シートのコピー・移動・削除(Copy,Move,Delete)

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

第66回.シートのコピー・移動・削除(Copy,Move,Delete)


シートのコピーや移動をしたり、また削除する場合の説明です。
マクロVBAでは、雛形シートをコピーして使ったり、不要なシートを削除することは頻繁にあります。


シートのコピー・移動には、
Worksheet.Copyメソッド、Worksheet.Moveメソッド
これらの、WorkSheetオブジェクトのメソッドを使用します。

シートを削除するには、
Worksheet.Deleteメソッドを使用します。


シートのコピー・移動

シートをコピーするには、Worksheet.Copyメソッドを使います。
シートを移動するには、Worksheet.Moveメソッドを使います。

シートのコピー

式.Copy Before, After

シートの移動

式.Move Before, After

式は、WorkSheetオブジェクトです。
Sheets(インデックス)
Worksheets("シート名")
オブジェクト変数(Worksheet型)
等になります。

Before コピーしたシートを特定のシートの直前の位置に挿入するときに、そのシートを指定します。
ただし、引数 After を指定すると、引数 Before を指定することはできません。
After コピーしたシートを特定のシートの直後の位置に挿入するときに、そのシートを指定します。
ただし、引数 Before を指定すると、引数 After を指定することはできません。

シートのコピーを行った場合は、コピーで作成された新規シートがアクティブになります。
シートの移動を行った場合は、移動したシートがアクティブになります。
ただし、コピー・移動の対象となるシートが非表示シートの場合は別のシートがアクティブになります。
シートコピー後のアクティブシートは何か
ツイッターで出題したVBAに関する選択問題です。シートコピーした後に、変数にActiveSheetを入れます。その変数に入っるシートは何かと言う問題です。つまり、シートコピー直後のActiveSheetは何か? と言う問題です。

引数 Before,Afterの両方を省略した場合は新規ブックにコピー・移動される

引数Beforeと引数Afterの両方を省略した場合は、
新規ブックが自動的に作成され、シートはその新規ブック内にコピー・移動されます。
エクセルの操作で、シートの「移動またはコピー」で、新規ブックを選んだ場合と同じです。

VBA マクロ シートのコピー・削除


Copyメソッドの使用例

Worksheets(1).Copy

Worksheets(1)だけの、新規ブックが作成されます。


Worksheets(1).Copy After:=Worksheets(Worksheets.Count)

1番目のシートを最後のシートの後ろにコピーしています。


Moveメソッドの使用例

Sheets("シート名").Move After:=Sheets(Sheets.Count)

Sheets("シート名")をシートの最後に移動しています。


シートの削除

シートを削除するには、Worksheet.Deleteメソッドを使います。

式.Delete

式は、WorkSheetオブジェクトです
Sheets(インデックス)
Worksheets("シート名")
オブジェクト変数(Worksheet型)
等になります。

Deleteメソッドの使用例

Worksheets(1).Delete

先頭のシートが削除されます。
しかし、
シートを削除すると、以下のメッセージが表示され、マクロが中断します。

VBA マクロ シートのコピー・削除

このメッセージは邪魔ですよね。
57回.Applicationのプロパティで説明しましたが、
・Applicationの主要プロパティ ・ScreenUpdating(マクロVBAの高速化) ・DisplayAlerts(警告停止) ・Interactive(ユーザー操作の禁止) ・Calculation(計算方法) ・StatusBar ・Cursor ・その他

Application.DisplayAlerts = False

これを入れる事で、このメッセージは出なくなります。
つまり、

Application.DisplayAlerts = False
Worksheets(1).Delete

このようにVBAを書きます。
Application.DisplayAlerts = Falseは、
Worksheets(1).Deleteより前に実行されていれば、どの場所、どの時点でも大丈夫です。


シートのコピー・移動・削除の関連記事

シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)|マクロVBA再入門
・シートのコピー ・シートの挿入 ・シートの削除 ・メソッドの戻り値 ・ExcelマクロVBA入門の対応ページ
シートの追加・削除(Add,Delete)|VBAサンプル集
・シートの追加・削除のVBA ・オブジェクト変数を使用したシートの追加・削除のVBA ・Withステートメントを使用したシートの追加・削除のVBA
シートを削除:不定数のシート名に対応|VBAサンプル集
不要となったシートを削除するマクロVBAのサンプルです。不定数のシート名を指定して削除できるようにSubを作成します。名前で指定されたシートがない場合は特に何もしません。指定されたシート名のシートがある場合のみ削除します。
シートコピー後のアクティブシートは何か
ツイッターで出題したVBAに関する選択問題です。シートコピーした後に、変数にActiveSheetを入れます。その変数に入っるシートは何かと言う問題です。つまり、シートコピー直後のActiveSheetは何か? と言う問題です。




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

第63回.ブックを開く(Open,Add)
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
第67回.総合練習問題7
第68回.シートの保護、ブックの保護(Protect)
第69回.シートの非表示(Visible,Hidden)
第70回.ウィンド枠の固定(FreezePanes)
第71回.印刷(PrintOut)
第72回.印刷プレビュー(PrintPreview)
第139回.エクスポート(PDF/XPS)


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

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




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


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



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