J'ai le code suivant qui ne fonctionne pas comme prévu:
If Sheets("a") <> "" Then MsgBox ("sheet a exists")
Comment puis-je savoir si la feuille a existe dans le classeur?
Je ferais une fonction distincte pour cela:
Function SheetExists(SheetName As String) On Error GoTo no: WorksheetName = Worksheets(SheetName).Name SheetExists = True Exit Function no: SheetExists = False End Function
Ensuite, vous pouvez facilement l'appeler là où vous le souhaitez, même dans une formule si vous le souhaitez:
Sub ABC() If SheetExists("Test") Then MsgBox "Yay!" Else MsgBox "Boo!" End If End Sub
ou
=If(SheetExists("Test"),"Yay!","Boo")
Vous pouvez vérifier l'erreur. par exemple:
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
Quelque chose comme:
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")
Cela fonctionne comme prévu