2017-10-18 7 views
2
If Error(Sheets(ws_str)) = True Then Exit Sub 

Retourne l'erreur d'exécution 9. Je sais que cette feuille n'existe pas. Comment gérer les erreurs dans les cas où la feuille de calcul n'existe pas?Traitement des erreurs lorsque la feuille n'existe pas

+0

Vous pouvez utiliser les réponses données pour créer un ** UDF ** (fonction définie par l'utilisateur) et avoir la feuille de calcul en entrée. – danieltakeshi

+0

Copie possible de [Tester ou vérifier si la feuille existe] (https://stackoverflow.com/questions/6688131/test-or-check-if-sheet-exists) – Indent

Répondre

2

Essayez le petit morceau de code ci-dessous:

Option Explicit 

Sub SheetExits() 

Dim ws As Worksheet 
Dim ws_str As String 

ws_str = "aaa" ' for test 

On Error Resume Next 
Set ws = Worksheets(ws_str) 
On Error GoTo 0 
If ws Is Nothing Then Exit Sub  

End Sub 
2

Cela permettra de résoudre votre problème:

Sub ErrorHandling() 
On Error GoTo ExitSub 
Dim ws As Worksheet 

Set ws = Worksheets("NonExistingSheet") 'it will throw an error 
MsgBox ("This won't be displayed") 

ExitSub: 
End Sub 

En fait, au début définir, où votre code devrait reprendre en cas d'erreur. Pour satisfaire votre exigence, placez le point de reprise juste avant End Sub, donc il va directement là en cas d'erreur.

2
Function SheetExists(sheetname as string) as boolean 
On error goto whoops 
dim ws as worksheet 
set ws = worksheets(sheetname) 
set ws = nothing 
sheetexists = true 
exit function 
whoops: 
sheetexists = false 
end function