シートが存在するか調べる関数
タイトルのマクロは、以下です。
'********************************************************
'* シートが存在するか調べる関数。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ブックを指定できるように改造した関数
冒頭の関数は、ブックの指定ができませんできたが、以下は、ブックの指定を追加した関数です。
'********************************************************
'* シートが存在するか調べる関数。20180119
'* sheetName(String型):チェックするシート名
'* wb(Workbook型):チェックするブック
'* 戻り値:シートが存在すればTrue、存在しなければFalse
Function fncSheetExist(ByVal sheetName As String, ByVal wb As Workbook) As Boolean
  Dim objWS As Worksheet    ' Worksheetオブジェクトを宣言
  
  fncSheetExist = False     ' 戻り値をFalseに初期化
  
  ' 全てのシートをループしてチェック
  For Each objWS In wb.Worksheets
      ' シート名が一致するか確認
      If objWS.Name = sheetName Then
          fncSheetExist = True  ' 一致した場合、戻り値をTrueに設定
          Exit For              ' ループを終了
      End If
  Next objWS
End Functionおこのみの関数を使用してください。



