Кто-нибудь знает, как проверить, существуют ли определенные листы в документе Excel с помощью Excel VBA?
Как проверить, существуют ли определенные листы в Excel-VBA?
Ответ 1
Хотя (к сожалению) такой метод недоступен, мы можем создать свою собственную функцию, чтобы проверить это.
Надеемся, что приведенный ниже код соответствует вашим потребностям.
Edit1: Добавлена также инструкция delete...
Sub test()
    If CheckSheet(Sheets(3).Name) then
        Application.DisplayAlerts = False
        Sheets(Sheets(3).Name).Delete
        Application.DisplayAlerts = True
    End If
End Sub
Решение, для которого я хотел бы...
Function CheckSheet(ByVal sSheetName As String) As Boolean
    Dim oSheet As Excel.Worksheet
    Dim bReturn As Boolean
    For Each oSheet In ActiveWorkbook.Sheets
        If oSheet.Name = sSheetName Then
            bReturn = True
            Exit For
        End If
    Next oSheet
    CheckSheet = bReturn
End Function
В качестве альтернативы, если вы не возражаете использовать код, который активно поднимает ошибки (что не рекомендуется с использованием общих правил кодирования), вы можете использовать этот Spartan Программирование wannabe 'code ниже...
Function CheckSheet(ByVal sSheetName As String) As Boolean
    Dim oSheet As Excel.Worksheet
    Dim bReturn As Boolean
    For Each oSheet In ActiveWorkbook.Sheets
        If oSheet.Name = sSheetName Then
            bReturn = True
            Exit For
        End If
    Next oSheet
    CheckSheet = bReturn
End Function
Function CheckSheet(ByVal sSheetName As String) As Boolean
    On Error Resume Next
    Dim oSheet As Excel.Worksheet
    Set oSheet = ActiveWorkbook.Sheets(sSheetName)
    CheckSheet = IIf(oSheet Is Nothing, False, True)
End Function
		Ответ 2
Что-то вроде этого позволит вам начать:
On Error Resume Next
Dim wSheet as Worksheet
Set wSheet = Sheets(1) ' can also be a string, such as Sheets("Sheet1")
If wSheet Is Nothing Then
    MsgBox "Worksheet not found!"
    Set wSheet = Nothing ' make the worksheet point to nothing. 
    On Error GoTo 0 
Else 
    MsgBox "Worksheet found!"
    Set wSheet = Nothing ' set the found Worksheet object to nothing.  You can use the found wSheet for your purposes, though.  
End If
Этот код был основан на http://www.ozgrid.com/VBA/IsWorkbookOpen.htm. Найдите подменю DoSheetExist().
Надеюсь, это поможет!
Ответ 3
Я адаптировал этот код для использования в LotusScript, одном из языков, используемых IBM Notes (ранее Lotus Notes), как показано ниже.
Public Function ExcelSheetExists( _
    xlBook As Variant, _ ' Excel workbook object
    ByVal strSheetName As String _
    ) As Boolean
    On Error GoTo errHandler
    ForAll xlSheet In xlBook.Sheets
        If xlSheet.Name = strSheetName Then
            ExcelSheetExists = True
            Exit Forall
        End If
    End ForAll
    GoTo Done
errHandler:
    ' Call MyCustomErrorHandler()
    Resume Done
Done:
End Function
		Ответ 4
On Error GoTo Line1
If Sheets("BOX2").Index > 0 Then
Else
Line1: MsgBox ("BOX2 is missing")
end if 
Я сделал это так:)