指定した名前のシートが存在するかを確認する方法
スポンサーリンク
Excel VBA では指定した名前のシートが存在する関数やメソッドは用意されていない為、自分で用意する必要があります。ここでは「シート存在チェック」という Function を用意してシートの存在確認を行う方法を紹介します。
全てのシートをループして確認する方法
ワークブック内の全部のワークシートをループして1個ずつ名前を確認し、一致するものがあるかをチェックする方法です。サンプルコードは次の通りです。
Functionシート存在チェック | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Function シート存在チェック(strSheetName As String) Dim blnFileExists As Boolean Dim objWorksheet As Worksheet blnFileExists = False '全てのシートをループする。 For Each objWorksheet In ThisWorkbook.Worksheets If objWorksheet.Name = strSheetName Then blnFileExists = True Exit For End If Next シート存在チェック = blnFileExists End Function |
上記を使用した例は次の通りです。
VBA(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Sub test() If シート存在チェック("Excelテスト") Then Debug.Print "「Excelテスト」シートは存在します。" Else Debug.Print "「Excelテスト」シートは存在しません。" End If End Sub Function シート存在チェック(strSheetName As String) Dim blnFileExists As Boolean Dim objWorksheet As Worksheet blnFileExists = False '全てのシートをループする。 For Each objWorksheet In ThisWorkbook.Worksheets If objWorksheet.Name = strSheetName Then blnFileExists = True Exit For End If Next シート存在チェック = blnFileExists End Function |
エラー処理を利用する方法
存在しないシートを変数にセットしようとするとエラーが発生することを利用してシートの存在チェックを行う方法です。サンプルコードは次の通りです。
Functionシート存在チェック | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | Function シート存在チェック(strSheetName As String) Dim objWorksheet As Worksheet On Error GoTo NotExists Set objWorksheet = ThisWorkbook.Sheets(strSheetName) ファイル存在チェック = True Exit Function NotExists: ファイル存在チェック = False End Function |
上記を使用した例は次の通りです。
VBA(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Sub test() If シート存在チェック("Excelテスト") Then Debug.Print "「Excelテスト」シートは存在します。" Else Debug.Print "「Excelテスト」シートは存在しません。" End If End Sub Function シート存在チェック(strSheetName As String) Dim objWorksheet As Worksheet On Error GoTo NotExists Set objWorksheet = ThisWorkbook.Sheets(strSheetName) シート存在チェック = True Exit Function NotExists: シート存在チェック = False End Function |
スポンサーリンク