【VBA】指定したシート以外のシートをすべて削除する

ループ処理で1つずつシート名を比較し削除

繰り返し処理の中で、1つずつ「処理中のワークシート名」と「指定したシート名」を比較し、名前が違う時に削除処理をおこないます。

コード

 

解説

繰り返し処理(For Each)の中で、targetSheet.Name(処理しているシートの名前)と”5月の成績表”を比較して、異なる時そのシートを削除しています。

処理がすべて終わると、”5月の成績表”以外のシートはすべて削除されます。

実際にプログラムを自分で作る時は、この”5月の成績表”を変更してください。

POINT
シート名は、ダブルクォーテーションで囲みます。
注意すること
ブックの中に削除から除外するシートが元々ない(今回の例だと”5月の成績表”シートがない)と、すべてのシートを削除することになります。
すると、ブックには1つもシートがない状態になってしまうので、エラーが発生してしまいます。

複数のシートを除外したい時

複数のシートを除外したい時は、除外したいシートの数だけANDで条件をつなげていきます。

コード

 

解説

8行目のIf文の意味は「シート名が5月の成績表でない、かつシート名が6月の成績表でない時」となります。

結果として、”5月の成績表”と”6月の成績表”以外のシートは削除されます。

 
ただし、除外したいシートがもっと増えた時、ANDとtargetSheet.Nameが増えてコードが長くなり見にくくなります。
実際に「Ifで複数指定」のコードを見てください。3つのシートを除外しています。

 

Ifで複数指定

 
このような時は、Select Caseを使うと見やすくシンプルになります。

 

Select Caseで複数指定

Select Caseを使い慣れていないと難しく感じるかもしれませんが、コードがシンプルになるので使ってみてください。

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

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

関連記事

タイトルとURLをコピーしました