日本語名

部品_シート存在チェック

英語名

SheetExists

URL

https://feelcodelab.com/vba_parts/sheetexists/

用途

・指定したブックに、指定した名前のワークシートが存在するかを判定する
・存在する場合は True、存在しない場合は False を返す
・シートを操作する前の存在確認(エラー防止)に使用する
★ この部品は Sub(プロシージャ)ではなく「Function(関数)」で、Boolean を返す

基礎区分

土台

用途区分

確認

操作対象区分

シート

前提条件

★【最重要】この部品は Function(関数)であり、戻り値(Boolean)を返す
  → 呼び出し側は、戻り値を受け取って、存在の有無を判定する
★【最重要】調べるブック(vWb)は、必ず引数で指定する(省略できない)
  → ThisWorkbook = このマクロが入っているブック / ActiveWorkbook = いまアクティブなブック
  → ファイルを開く部品の後は、ActiveWorkbook が、開いたファイルに切り替わる。
    開いた直後に、ActiveWorkbook を変数へ控えて、その変数を渡す
・ブックに何も設定していない変数(Nothing)を渡すと、エラーで止まる(vbObjectError + 1010)
・確認対象はワークシートのみ(グラフシートは存在していても False を返す)
・シート名の大文字・小文字は区別されない
・シート名が空白・不正な場合は False を返す(エラーにはならない)
・Offset / Find / Resize / With は禁止

依存関係(部品)

・なし(土台の部品。他の部品を参照しない。単独で使用可能)
・シート名変更(RenameSheet)などのシート操作系の部品の「前」に呼び出して、
  重複・不存在を事前に確認する使い方が多い

依存関係(シート)

・特になし(マッピング表等は不要)

引数

vWb        : 調べるブック(Workbook)※必須(省略できない)
vSheetName : 存在を確認したいシートのシート名(String)

戻り値

Boolean : 指定したブックにシートが存在する場合は True、存在しない場合は False

戻り値の型

Boolean

コード全文

Function 部品_シート存在チェック( _
        ByVal vWb As Workbook, _
        ByVal vSheetName As String) As Boolean

    部品_シート存在チェック = f_SheetExists(vWb, vSheetName)

End Function

Function f_SheetExists( _
        ByVal vWb As Workbook, _
        ByVal vSheetName As String) As Boolean

    Dim ws As Worksheet

    f_SheetExists = False

    If vWb Is Nothing Then
        Err.Raise vbObjectError + 1010, "f_SheetExists", _
                  "調べるブック(vWb)が設定されていません(Nothing)。"
    End If

    On Error GoTo ErrHandler

    Set ws = vWb.Worksheets(vSheetName)

    f_SheetExists = True
    Exit Function

ErrHandler:
    f_SheetExists = False

End Function

呼び出し・活用事例

<例1:マクロのファイル(ThisWorkbook)を調べる>
If 部品_シート存在チェック(ThisWorkbook, "入力") Then
    ThisWorkbook.Worksheets("入力").Activate
Else
    MsgBox "シート「入力」が存在しません"
End If

<例2:開いたファイルを調べる>
Dim wbDst As Workbook

If 部品_ファイルを開く("E:\TEST\テンプレート.xlsx") = False Then Exit Sub
Set wbDst = ActiveWorkbook                          '開いた直後に控える

If 部品_シート存在チェック(wbDst, "帳票") = False Then
    MsgBox "テンプレートにシート「帳票」がありません"
End If

<例3:シート名変更の前に、重複を確認する>
If 部品_シート存在チェック(ThisWorkbook, "TEMP") = False Then
    MsgBox "シート「TEMP」が存在しません"
ElseIf 部品_シート存在チェック(ThisWorkbook, "入力_2026") Then
    MsgBox "「入力_2026」は既に存在します"
Else
    isRenamed = 部品_シート名変更(ThisWorkbook.Worksheets("TEMP"), "入力_2026")
End If

BASファイル(ダウンロード)

SheetExists.bas

バージョン

1.1

更新日

2026-11-02