Используйте эту функцию (в которую вы также можете передать переменную книги), чтобы определить, существует ли лист (полученный из этого решения ):
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
Вы можете вызовите эту функцию из своего макроса, чтобы динамически назначить лист. Здесь следует отметить несколько моментов:
- Если существует более одного из ваших целевых листов, код назначит вашу переменную листа первому совпадению
- Возможно, вы захотите чтобы учесть возможность того, что ни один из листов не существует
Sub Test()
Dim ws As Worksheet
'Dynamically assign worksheet variable
If WorksheetExists("Sheet1") Then
Set ws = Sheets("Sheet1")
ElseIf WorksheetExists("Sheet2") Then
Set ws = Sheets("Sheet2")
ElseIf WorksheetExists("Sheet3") Then
Set ws = Sheets("Sheet3")
End If
'Account for none of the sheets existing
If ws Is Nothing Then
MsgBox "None of sheets exist"
Exit Sub
End If
MsgBox ws.Name
End Sub