Błąd VBA

Błąd VBA On Error to łatwa metoda obsługi nieoczekiwanych wyjątków w makrach programu Excel. Wiadomo, że nie możemy pisać kodu bez żadnego błędu. Czasami pisanie dużego kodu może dawać nam błąd nawet podczas kompilacji. Aby uniknąć tego rodzaju sytuacji, dodajemy komunikat o błędzie, który zamiast dać nam prawidłową odpowiedź lub kod błędu, pokaże nam komunikat z kodem błędu. Wyglądałoby na to, że otrzymaliśmy wynik naszych obliczeń, ale to kod błędu zostanie wydrukowany.

Jak korzystać z Excel VBA na oświadczeniu o błędzie w programie Excel?

Istnieją 3 sposoby błędu w VBA. Rozumiem różne sposoby z kilkoma przykładami.

Przykład 1

Pierwszym typem błędu jest błąd kompilacji kodu, który pojawia się, gdy kod jest niezadeklarowany lub niemożliwe jest zmienne. Aby zrozumieć więcej, użyjemy prostego matematycznego wyrażenia podziału. W tym celu przejdź do menu Wstaw VBA i wybierz Moduł, jak pokazano poniżej.

Teraz otwórz podkategorię i dodaj dowolną nazwę. Ponieważ używamy On Error, nazwaliśmy tak samo.

 Sub OnError () End Sub 

Teraz zdefiniuj dowolne 2 lub 3 liczby całkowite. Tutaj bierzemy X i Y jako liczby całkowite.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer End Sub 

Teraz, jak omówiono powyżej, obliczymy wyrażenie matematyczne z podziałem. Dla X umieścimy znak w Liczniku i podzielimy go na 0. A Y będzie równe 20/2, co jest liczbą całkowitą.

 Sub OnError () Dim X As Integer, Y As Integer X = Test / 0 Y = 20/2 End Sub 

Teraz uruchom kod za pomocą klawisza F5 lub klikając przycisk odtwarzania, jak pokazano poniżej. Otrzymamy błąd wykonania 6, który pokazuje błąd nadpisywania liczby.

Teraz, aby zastąpić ten błąd, dodamy jedną linię Wznów błąd Dalej, zanim napiszemy kod matematyczny. Przeskoczy kod błędu, ale nie będziemy w stanie zobaczyć wyniku drugiego kodu matematycznego. Ukrywa to komunikat o błędzie tylko wtedy, gdy różne kody wierszy, jak pokazano poniżej. Teraz spróbuj również uruchomić kod.

 Sub OnError () Dim X As Integer, Y As Integer On Error Wznów Następny X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Teraz, aby zastąpić ten błąd, dodamy jedną linię Wznów błąd Dalej, zanim napiszemy kod matematyczny. Przeskoczy kod błędu, ale nie będziemy w stanie zobaczyć wyniku drugiego kodu matematycznego. Ukrywa to komunikat o błędzie tylko wtedy, gdy różne kody wierszy, jak pokazano poniżej. Teraz spróbuj również uruchomić kod.

Przykład nr 2

W tym przykładzie rozważymy ten podział matematyczny, który daje nieskończony wynik, ale w kodowaniu da wynik # DIV / 0. Aby to wykazać, rozważymy jeszcze jedną liczbę całkowitą Z wraz z X i Y w podkategorii, jak pokazano poniżej.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer End Sub 

Teraz obramuj wszystkie liczby całkowite X, Y i Z matematycznym wyrażeniem dzielenia i wydrukuj je za pomocą funkcji MsgBox w VBA wyniku każdej liczby całkowitej.

Poniżej dla liczby całkowitej X podzieliliśmy 10 przez 0, 20 przez 2 i 30 przez 4.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz uruchom kod za pomocą klawisza F5 lub ręcznie, jak pokazano poniżej.

Jak widzimy na powyższym zrzucie ekranu Błąd wykonania 11, co oznacza, że ​​błąd jest związany z liczbą. Teraz, aby temu zaradzić, dodaj jedną linię Wznów błąd Dalej przed wyrażeniem matematycznym, jak pokazano poniżej.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error Resume Next X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz, jeśli uruchomimy kod, otrzymamy zero dla pierwszej liczby całkowitej X, a dla Y i Z otrzymamy odpowiednie odpowiedzi podziału, jak pokazano poniżej.

Przykład nr 3

Drugi rodzaj błędu pojawia się, gdy wprowadzimy nieprawidłowe dane do kodu. W tym celu rozważymy 3 liczby całkowite X, Y i Z, otwierając podkategorię w VBA, jak pokazano poniżej.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer End Sub 

Rozważmy teraz również ten sam podział matematyczny, który widzieliśmy w powyższym przykładzie.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Jeśli uruchomimy kod, otrzymamy ten sam komunikat o błędzie co Błąd czasu wykonania 11.

Teraz, aby zastąpić ten błąd, użyj tekstu On Error GoTo ze słowem „„ Wynik, aby pominąć komunikat o błędzie i uzyskać wynik, który działa dobrze, jak pokazano poniżej.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz uruchom kod ponownie. Otrzymamy taki sam wynik jak w poprzednim przykładzie.

W przypadku błędu GoTo ZResult pomaga nam bezpośrednio przeskoczyć wspomnianą liczbę całkowitą punktu wyniku, tak jak zrobiliśmy to dla liczby całkowitej Z.

Przykład 4

W trzecim typie błędu, kiedy uruchamiamy kod, a VBA nie jest w stanie zrozumieć linii kodu. Można to zrobić za pomocą kodu On Error Resume Next wraz z MsgBox Err.Number . Rozważ te same dane, które zastosowano w powyższych przykładach. Ponownie zobaczymy te same 3 liczby całkowite X, Y i Z, jak pokazano poniżej.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer End Sub 

Aby wydrukować wynikowy wynik, zezwól na wyświetlenie komunikatów dla wszystkich liczb całkowitych.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz, jeśli uruchomimy cały kod, otrzymamy komunikat o błędzie błędu matematycznego Błąd czasu wykonania 11.

Teraz, aby zastąpić ten błąd, użyjemy opcji Wznów dalej błędu.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error Resume Next X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

I uruchom kod. To da wynik użycia na prawidłowej linii matematycznej, jak pokazano poniżej.

Teraz dodatkowo dodaj wiersz kodu ZResult przed wyrażeniem matematycznym z podziałem całkowitym Z i dodaj wiersz kodu MsgBox Err.Number na końcu kodu, jak pokazano poniżej.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error Wznów Dalej X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Nr End Sub Sub 

Teraz uruchom kod za pomocą klawisza F5 lub naciskając przycisk odtwarzania, jak pokazano poniżej.

Jak widać na powyższych zrzutach ekranu. Pierwsze okno komunikatu ma wartość 0, która zastępuje niepoprawne wyrażenie matematyczne. Drugi i trzeci wynik dzielą liczby całkowite Y i Z. I ostatnie okno komunikatu ma kod błędu 11 w czasie wykonywania, który prawdopodobnie jest kodem błędu wyrażeń dzielących liczby całkowite X.

Plusy VBA przy błędzie

  • Możemy obliczyć dowolny wzór matematyczny, nawet jeśli jest on niepoprawny.
  • W przypadku większych struktur kodowania, w których występują szanse lub występują błędy, użycie tych metod może dać poprawny wynik nawet między wierszami kodów.
  • Daje to lepszy wynik w porównaniu do wyniku uzyskanego z normalnych obliczeń programu Excel.

Rzeczy do zapamiętania

  • Zawsze zapisuj plik w pliku Excel z włączoną obsługą makr, abyśmy mogli używać utworzonego kodu VBA wiele razy.
  • Zawsze kompiluj napisany kod przed implementacją z dowolnym wymaganiem programu Excel.
  • W razie potrzeby przypisz napisany kod do dowolnego przycisku, abyśmy mogli szybko kliknąć przycisk i uruchomić kod.

Możesz pobrać ten szablon Excela z błędem VBA tutaj - Szablon Excela z błędem VBA

Polecane artykuły

To był przewodnik po Excelu VBA o błędzie. Tutaj omówiliśmy, jak korzystać z instrukcji VBA On Error, wraz z kilkoma praktycznymi przykładami i szablonem programu Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. Jak korzystać z funkcji VBA TRIM?
  2. Format liczb w VBA
  3. Przewodnik po Excel VBA Do While Loop
  4. Jak korzystać z funkcji wyszukiwania VBA?

Kategoria: