シートが存在するか調べる関数
タイトルのマクロは、以下です。
'********************************************************
'* シートが存在するか調べる関数。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