ループ処理でアクティブシート名と比較し削除
繰り返し処理の中で、1つずつ「ワークシートの名前」と「アクティブシートの名前」を比較し、名前が違う(=アクティブシートではない)時に削除処理をおこないます。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Dim jogaiSheetNm As String '削除しないシート名 Dim targetSheet As Worksheet '繰り返し用 'アクティブシート名を取得 jogaiSheetNm = ActiveSheet.Name '警告メッセージを表示しない Application.DisplayAlerts = False '削除処理 For Each targetSheet In Worksheets If targetSheet.Name <> jogaiSheetNm Then targetSheet.Delete End If Next '警告メッセージを表示 Application.DisplayAlerts = True |
解説
今回の例では、変数jogaiSheetNmに、アクティブシート名を保存しています。
アクティブシートはユーザのクリックなどが原因で、他のシートに変化する可能性があります。
なので、一度変数にアクティブシート名を保存することで、アクティブシートが変化しても影響を受けないようにしています。
繰り返し処理(For Each)の中で、targetSheet.Name(処理しているシートの名前)とjogaiSheetNm(アクティブシートの名前)を比較して、異なる時そのシートを削除しています。
POINT
アクティブシートを扱う時は、変数に保存しよう。
その他テクニックは、次の記事を参考にしてください。
【VBA】ワークシートの削除とテクニック
ワークシートを削除する時は、Deleteメソッドを使います。
削除するシートは、「シート名」や「インデックス(何番目)」で指定できます。
シート名で指定し削除
Worksheets("○○").Deleteと書き、○○の部...