У меня есть следующий код, который не работает, как ожидалось:
If Sheets("a") <> "" Then MsgBox ("sheet a exists")
Как я могу определить, существует ли лист а в книге?
У меня есть следующий код, который не работает, как ожидалось:
If Sheets("a") <> "" Then MsgBox ("sheet a exists")
Как я могу определить, существует ли лист а в книге?
Я бы сделал для него отдельную функцию:
Function SheetExists(SheetName As String)
On Error GoTo no:
WorksheetName = Worksheets(SheetName).Name
SheetExists = True
Exit Function
no:
SheetExists = False
End Function
Тогда вы можете легко вызвать его там, где это необходимо, даже в формуле, если хотите:
Sub ABC()
If SheetExists("Test") Then
MsgBox "Yay!"
Else
MsgBox "Boo!"
End If
End Sub
или же
=If(SheetExists("Test"),"Yay!","Boo")
Вы можете проверить на ошибку. например:
Dim A As String
On Error Resume Next
A = Worksheets("a").Name
Select Case Err.Number
Case 9
MsgBox "Sheet ""a"" does not exist"
Case 0
MsgBox "Sheet ""a"" exists"
Case Else
Stop
End Select
On Error GoTo 0
Что-то вроде:
Sub DoesSheetExist()
Dim s As Worksheet
For Each s In Sheets
If s.Name = "a" Then
MsgBox "Sheet a exists"
Exit Sub
End If
Next s
MsgBox "Sheet a does not exist"
End Sub
If (Worksheets("a").Name <> "") Then MsgBox ("sheet A exists")
это работает как ожидалось