1. ホーム
  2. excel

[解決済み] シートが存在するかどうかのテストまたはチェック

2022-07-04 21:28:06

質問

Dim wkbkdestination As Workbook
Dim destsheet As Worksheet

For Each ThisWorkSheet In wkbkorigin.Worksheets 
    'this throws subscript out of range if there is not a sheet in the destination 
    'workbook that has the same name as the current sheet in the origin workbook.
    Set destsheet = wkbkdestination.Worksheets(ThisWorkSheet.Name) 
Next

基本的に、私は元のワークブックのすべてのシートをループし、次に destsheet を、現在反復している元のワークブックのシートと同じ名前を持つシートに設定します。

どのように私はそのシートが存在するかどうかをテストすることができますか?何かのように。

If wkbkdestination.Worksheets(ThisWorkSheet.Name) Then 

どのように解決するのですか?

エラー処理の使用が不適切であるとして、この方法を嫌う人もいますが、VBA では許容範囲と考えられているようです...。 別の方法としては、一致するものを見つけるまですべてのシートをループすることです。

Function WorksheetExists(shtName As String, Optional wb As Workbook) As Boolean
    Dim sht As Worksheet

    If wb Is Nothing Then Set wb = ThisWorkbook
    On Error Resume Next
    Set sht = wb.Sheets(shtName)
    On Error GoTo 0
    WorksheetExists = Not sht Is Nothing
End Function