web-dev-qa-db-fra.com

Comment vérifier si certaines feuilles existent ou non à Excel-VBA?

Est-ce que quelqu'un sait comment vérifier si certaines feuilles existent ou non dans un document Excel utilisant Excel VBA?

10
Vivian

Bien que (malheureusement) une telle méthode n'est pas disponible, nous pouvons créer notre propre fonction pour vérifier cela ..

J'espère que le code ci-dessous correspond à vos besoins.

Edition1: Ajouté également Supprimer la déclaration ...

Sub test()

    If CheckSheet(Sheets(3).Name) then

        Application.DisplayAlerts = False
        Sheets(Sheets(3).Name).Delete
        Application.DisplayAlerts = True

    End If

End Sub

La solution que j'aurai pour ...

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

Sinon, si cela ne vous dérange pas d'utiliser le code qui soulève activement des erreurs (qui n'est pas recommandée par les meilleures pratiques communes de codage), vous pouvez utiliser ceci ' programmation Spartan Wannabe' Code ci-dessous ...

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
13
Tiago Cardoso
On Error GoTo Line1
If Sheets("BOX2").Index > 0 Then
Else
Line1: MsgBox ("BOX2 is missing")
end if 

Je l'ai fait de cette façon :)

0
Rens Slenders

J'ai adapté ce code à utiliser dans LotusScript, l'une des langues utilisées par IBM Notes (anciennement Lotus Notes), comme indiqué ci-dessous.

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
0
John D