【VBA】指定した名前のシートを削除する方法

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. まとめ

指定した名前のシートを削除したい場合は、事前に存在確認を行い、安全に削除できるよう工夫しましょう。
特に複数人で利用するブックでは、誤って必要なシートを削除しないように気を付ける必要があります。

コメント

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