У меня есть следующий код, который не работает, как ожидалось:

If Sheets("a") <> "" Then MsgBox ("sheet a exists")

Как я могу определить, существует ли лист а в книге?

4 ответа4

2

Я бы сделал для него отдельную функцию:

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")
1

Вы можете проверить на ошибку. например:

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
1

Что-то вроде:

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
-1
If (Worksheets("a").Name <> "") Then MsgBox ("sheet A exists")

это работает как ожидалось

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .