【VBA】複数のワークシートをまとめて削除する

ワークシートの削除自体はDeleteメソッドを使いますが、削除するシートの指定方法がいくつかあります。

今回は、3つの方法を紹介しているので、使いやすい&理解しやすい方法を選んでください。

シート名を配列で指定して削除

Worksheets(Array(“○○”,”○○”)).Deleteと書き、○○の部分に「シート名」を指定します。

POINT

・シート名はダブルクォーテーションで囲みます。

・削除するシートの数だけ、カンマ(,)でシート名をつなげていきます。

 

コード

 

解説

Sheet1, Sheet2, Sheet3が削除されます。

Array関数について

初めて使う人にはピンときにくい関数です。

最初のうちは、「配列(複数の値)を渡す時は、Array関数を頭に付けて渡す」と割り切って、使いながら慣れていけばOKです。

 

インデックスを配列で指定して削除

Worksheets(Array(○○,○○)).Deleteと書き、○○の部分に「インデックス(何番目)」を指定します。

最初に紹介したシート名の指定とは違い、ダブルクォーテーションで囲まないので注意してください。

「シート名が決まっていない時」、「処理によってシート名が違う時」は、このインデックスによる指定になります。

POINT

インデックスはダブルクォーテーションで囲みません。

削除するシートの数だけ、カンマ(,)でインデックスをつなげていきます。

 

コード

 

解説

ブックの左から1、2、3番目のシートが削除されます。

 

選択状態の複数シートを削除

プログラムの処理などで選択状態になっているシートをすべて削除したい時は、ActiveWindow.SelectedSheets.Deleteで削除できます。

コード

 

解説

今回のプログラムでは、Worksheets(Array(1, 2, 3)).Selectで、左から1、2、3番目のシートが選択状態になっています。

そのため、ActiveWindow.SelectedSheets.Deleteでブックの左から1、2、3番目のシートが削除されます。

注意すること

ブックからすべてのシートを削除しようとすると、エラーになります。

ブックには、必ずシートが1つ以上ないといけないからです。

 

その他テクニックは、次の記事を参考にしてください。

【VBA】ワークシートの削除とテクニック
ワークシートを削除する時は、Deleteメソッドを使います。 削除するシートは、「シート名」や「インデックス(何番目)」で指定できます。 シート名で指定し削除 Worksheets("○○").Deleteと書き、○○の部...

 

関連記事

VBAテクニック辞典
成果を出す5つのポイント
VBAテクニック辞典
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました