分かりやすく、使いやすく。

指定した名前のシートが存在するかを確認する方法

スポンサーリンク

Excel VBA では指定した名前のシートが存在する関数やメソッドは用意されていない為、自分で用意する必要があります。ここでは「シート存在チェック」という Function を用意してシートの存在確認を行う方法を紹介します。

  1. 全てのシートをループして確認する方法
  2. エラー処理を利用する方法


全てのシートをループして確認する方法

ワークブック内の全部のワークシートをループして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 
スポンサーリンク
スポンサーリンク