シートが存在するか調べる関数

タイトルのマクロは、以下です。

'********************************************************
'* シートが存在するか調べる関数。20180119
'* sheetName(String型):チェックするシート名
'* 戻り値:シートが存在すればTrue、存在しなければFalse
Function fncSheetExist(sheetName As String) As Boolean

  Dim objWS As Worksheet    ' Worksheetオブジェクトを宣言
  
  fncSheetExist = False     ' 戻り値をFalseに初期化
  
  ' 全てのシートをループしてチェック
  For Each objWS In Worksheets
      ' シート名が一致するか確認
      If objWS.Name = sheetName Then
          fncSheetExist = True  ' 一致した場合、戻り値をTrueに設定
          Exit For              ' ループを終了
      End If
  Next objWS

End Function

各部分の説明

    Function fncSheetExist(sheetName As String) As Boolean
    • 関数の定義を行います。関数名は fncSheetExist で、引数としてシート名 sheetName を受け取ります。
      Dim objWS As Worksheet    ' Worksheetオブジェクトを宣言
    • Worksheet オブジェクトを宣言します。このオブジェクトは、全てのシートを順番に指します。
    fncSheetExist = False     ' 戻り値をFalseに初期化
    • 関数の戻り値を False に初期化します。これは、指定されたシートが存在しないと仮定しての設定です。
      For Each objWS In Worksheets
    • 全てのシートを Worksheets コレクションで順番にループします。
          ' シート名が一致するか確認
          If objWS.Name = sheetName Then
              fncSheetExist = True  ' 一致した場合、戻り値をTrueに設定
              Exit For              ' ループを終了
          End If
      Next objWS
    • ループ内で、各シートの名前をチェックします。
      • If objWS.Name = sheetName Then: 現在のシート名が引数 sheetName と一致するか確認します。
      • fncSheetExist = True: 一致する場合、関数の戻り値を True に設定します。
      • Exit For: 一致するシートが見つかったので、ループを終了します。

    使用例

    Sub CheckSheetExistence()
        Dim sheetName As String
    
        ' ユーザーにシート名を入力させる
        sheetName = InputBox("確認したいシート名を入力してください:")
    
        ' 入力されたシート名が存在するかを確認
        If fncSheetExist(sheetName) Then
            ' シートが存在する場合
            MsgBox "シート '" & sheetName & "' が存在します。", vbInformation
            ' シートをアクティブにする
            Worksheets(sheetName).Activate
        Else
            ' シートが存在しない場合
            MsgBox "シート '" & sheetName & "' は存在しません。", vbExclamation
        End If
    End Sub

      Follow me!