Vba: jak wyjść z sub w przypadku błędu


Za pomocą instrukcji Exit Sub w języku VBA można zakończyć podprocedurę w przypadku napotkania błędu.

Oto powszechny sposób użycia tego stwierdzenia w praktyce:

 Sub DivideValues()

Dim i As Integer
On Error GoTo ErrorMessage

For i = 1 To 10
    Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
    
Exit Sub

Error Message:
    MsgBox “ An Error OccurredExit Sub
    
End Sub

To konkretne makro próbuje podzielić każdą wartość z zakresu A1:A10 przez odpowiednią wartość z zakresu B1:B10 .

Jeśli wystąpi błąd (na przykład, próbujemy podzielić przez zero), wówczas instrukcja On Error GoTo nakazuje VBA uzyskanie dostępu do ErrorMessage , co nakazuje wygenerowanie okna komunikatu informującego użytkownika, że wystąpił błąd i zakończenie podprocedury za pomocą Exist Sub . oświadczenie.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Jak istnieć sub w przypadku błędu w VBA

Załóżmy, że mamy następującą listę wartości w kolumnach A i B:

Załóżmy teraz, że tworzymy następujące makro, aby podzielić każdą wartość w kolumnie A przez odpowiednią wartość w kolumnie B i wyświetlić wyniki w kolumnie C:

 Sub DivideValues()

Dim i As Integer

For i = 1 To 10
    Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
    
End Sub

Po uruchomieniu tego makra pojawia się następujący błąd:

Otrzymujemy ten błąd, ponieważ w czwartym wierszu arkusza Excela próbowaliśmy podzielić przez zero.

Jeśli po wystąpieniu tego błędu chcemy po prostu zakończyć podprocedurę, możemy użyć instrukcji Exit Sub w następujący sposób:

 Sub DivideValues()

Dim i As Integer
On Error GoTo ErrorMessage

For i = 1 To 10
    Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
    
Exit Sub

Error Message:
    MsgBox “ An Error OccurredExit Sub
    
End Sub

Kiedy uruchamiamy to makro, podprocedura wykonuje wszystkie możliwe problemy z dzieleniem, zanim napotka błąd, następnie pojawia się okno z informacją, że wystąpił błąd, a VBA po prostu istnieje w podprocedurze:

VBA w przypadku błędu wyjściowego poniżej

Uwaga : Pełną dokumentację instrukcji Exit w VBA znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

Jak tworzyć foldery za pomocą VBA
Jak usunąć foldery za pomocą VBA
Jak usunąć pliki za pomocą VBA

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *