ワークシートの削除自体はDeleteメソッドを使いますが、削除するシートの指定方法がいくつかあります。
今回は、3つの方法を紹介しているので、使いやすい&理解しやすい方法を選んでください。
シート名を配列で指定して削除
Worksheets(Array(“○○”,”○○”)).Deleteと書き、○○の部分に「シート名」を指定します。
・シート名はダブルクォーテーションで囲みます。
・削除するシートの数だけ、カンマ(,)でシート名をつなげていきます。
コード
1 2 3 4 5 6 7 8 9 10 |
'警告メッセージを表示しない Application.DisplayAlerts = False '削除するシートをシート名で指定 Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete '警告メッセージを表示 Application.DisplayAlerts = True |
解説
Sheet1, Sheet2, Sheet3が削除されます。
初めて使う人にはピンときにくい関数です。
最初のうちは、「配列(複数の値)を渡す時は、Array関数を頭に付けて渡す」と割り切って、使いながら慣れていけばOKです。
インデックスを配列で指定して削除
Worksheets(Array(○○,○○)).Deleteと書き、○○の部分に「インデックス(何番目)」を指定します。
最初に紹介したシート名の指定とは違い、ダブルクォーテーションで囲まないので注意してください。
「シート名が決まっていない時」、「処理によってシート名が違う時」は、このインデックスによる指定になります。
インデックスはダブルクォーテーションで囲みません。
削除するシートの数だけ、カンマ(,)でインデックスをつなげていきます。
コード
1 2 3 4 5 6 7 8 9 10 |
'警告メッセージを表示しない Application.DisplayAlerts = False '削除するシートをインデックス番号で指定 Worksheets(Array(1, 2, 3)).Delete '警告メッセージを表示 Application.DisplayAlerts = True |
解説
ブックの左から1、2、3番目のシートが削除されます。
選択状態の複数シートを削除
プログラムの処理などで選択状態になっているシートをすべて削除したい時は、ActiveWindow.SelectedSheets.Deleteで削除できます。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'警告メッセージを表示しない Application.DisplayAlerts = False '削除するシートをインデックス番号で選択 Worksheets(Array(1, 2, 3)).Select '選択しているシートを削除する ActiveWindow.SelectedSheets.Delete '警告メッセージを表示 Application.DisplayAlerts = True |
解説
今回のプログラムでは、Worksheets(Array(1, 2, 3)).Selectで、左から1、2、3番目のシートが選択状態になっています。
そのため、ActiveWindow.SelectedSheets.Deleteでブックの左から1、2、3番目のシートが削除されます。
ブックからすべてのシートを削除しようとすると、エラーになります。
ブックには、必ずシートが1つ以上ないといけないからです。
その他テクニックは、次の記事を参考にしてください。