今回は、Excel VBAで、指定した名前のシートが存在していた場合は削除する、という方法をご紹介します。
For Eachステートメントとは?
シートの削除についてご紹介する前に、先にFor Eachステートメントについてご紹介します。
For Eachステートメントとは、配列やコレクションなどで全ての要素を順に取り出して処理を行うときに使われるステートメントです。
Dim配列やコレクションの各要素を繰り返す変数名 As Variant(またはオブジェクト型) For Each配列やコレクションの各要素を繰り返す変数名 In配列やコレクションなどの名称 繰り返す処理内容 Next配列やコレクションの各要素を繰り返す変数名 |
のように記述します。
配列やコレクションの各要素を繰り返す変数名には、オブジェクト型またはバリアント型を指定します。
指定した名前のシートが存在していた場合削除する
下記のサンプル1は、「テスト2」という名前のシートが存在していた場合は削除するというプログラムです。
まず、
For Each ws In Worksheets
If ws.Name = “テスト2” Then flag = True
Next ws
でブック内の全てのシートを順に取り出して参照し、「テスト2」という名前のシートがあった場合は変数flagにTrueを代入します。
If flag = True Then
Application.DisplayAlerts = False
Worksheets(“テスト2”).Delete
Application.DisplayAlerts = True
End If
で、変数flagがTrueだった場合には、シート削除の確認表示をいったん表示しないようにして「テスト2」のシートを削除し、確認表示を再度有効にしています。
・サンプル1
Sub シートが存在していた場合削除() Dim ws As Worksheet ‘「テスト2」シートが存在していた場合削除 Application.DisplayAlerts = False End If End Sub |