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 ・・・新着記事一覧を見る

テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)


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

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




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


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



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