Excel VBAでは、シート名を指定して削除することができます。アクティブかどうかに関わらず、任意の名前のシートを削除したい場合に便利です。
1. 基本コード例
以下のサンプルコードは、「Sheet2」という名前のシートを削除する例です。
Sub DeleteSheetByName()
Dim ws As Worksheet
Dim targetName As String
targetName = "Sheet2"
On Error Resume Next 'エラー時はスルーして処理を継続
Set ws = ThisWorkbook.Worksheets(targetName)
On Error GoTo 0 'エラー時スルー処理を元に戻す
If Not ws Is Nothing Then
Application.DisplayAlerts = False '確認メッセージを表示しない
ws.Delete
Application.DisplayAlerts = True '元に戻す
Else
MsgBox "指定したシートが存在しません。", vbExclamation
End If
End Sub
2. ポイント解説
処理内容 | 説明 |
---|---|
Worksheets("シート名") | 指定した名前のシートを取得 |
On Error Resume Next / On Error GoTo 0 | 存在しないシート名を指定したときにエラーにならないよう設定 |
Application.DisplayAlerts = False | 削除確認メッセージを非表示 |
MsgBox | シートが存在しなかった場合にメッセージを表示 |
3. 注意点
- 存在しないシート名を指定するとエラーになるため、事前確認またはエラー処理が必要です。
- 最後の1枚の削除はエラーになります。
- 削除は元に戻せません。
4. まとめ
指定した名前のシートを削除したい場合は、事前に存在確認を行い、安全に削除できるよう工夫しましょう。
特に複数人で利用するブックでは、誤って必要なシートを削除しないように気を付ける必要があります。
コメント