Poniżej przyjrzymy się dwóm programom w Excel VBA. Jeden program po prostu ignoruje błędy. Drugi program kontynuuje wykonanie w określonej linii po trafieniu w błąd.
Sytuacja:
Oba programy obliczają pierwiastek kwadratowy z liczb.
Pierwiastek kwadratowy 1
Dodaj następujące wiersze kodu do przycisku polecenia „Square Root 1”.
1. Najpierw deklarujemy dwa obiekty Range. Nazywamy obiekty Range rng i cell.
Dim rng As Range, komórka As Range
2. Inicjujemy obiekt Range rng z wybranym zakresem.
Ustaw rng = Wybór
3. Chcemy obliczyć pierwiastek kwadratowy z każdej komórki w losowo wybranym zakresie (ten zakres może mieć dowolny rozmiar). W Excel VBA możesz użyć do tego pętli For Each Next. Dodaj następujące wiersze kodu:
Dla każdej komórki w rng
Następna komórka
Uwaga: rng i komórka są tutaj wybierane losowo, możesz użyć dowolnych nazw. Pamiętaj, aby odwoływać się do tych nazw w pozostałej części kodu.
4. Dodaj następującą linię kodu do pętli.
Przy błędzie Wznów Dalej
5. Następnie obliczamy pierwiastek kwadratowy z wartości. W Excel VBA możemy do tego użyć funkcji Sqr. Dodaj następującą linię kodu do pętli.
komórka.Wartość = Sqr(komórka.Wartość)
6. Wyjdź z Edytora Visual Basic i przetestuj program.
Wynik:
Wniosek: Excel VBA zignorował komórki zawierające nieprawidłowe wartości, takie jak liczby ujemne i tekst. Bez użycia instrukcji „On Error Resume Next” otrzymasz dwa błędy. Uważaj, aby używać instrukcji „On Error Resume Next” tylko wtedy, gdy masz pewność, że ignorowanie błędów jest w porządku.
Pierwiastek kwadratowy 2
Dodaj następujące wiersze kodu do przycisku polecenia „Square Root 2”.
1. Ten sam program co Square Root 1, ale zastąp 'On Error Resume Next' następującym:
W przypadku błędu przejdź do nieprawidłowej wartości:
Uwaga: InvalidValue jest tutaj wybierana losowo, możesz użyć dowolnej nazwy. Pamiętaj, aby w pozostałej części kodu odwoływać się do tej nazwy.
2. Poza pętlą For Each Next najpierw dodaj następujący wiersz kodu:
Wyjście Sub
Bez tej linii reszta kodu (kod błędu) zostanie wykonana, nawet jeśli nie ma błędu!
3. Excel VBA kontynuuje wykonywanie w wierszu zaczynającym się od „InvalidValue:” po wystąpieniu błędu (nie zapomnij o dwukropku). Dodaj następującą linię kodu:
Niewłaściwa wartość:
4. Na razie utrzymujemy prosty kod błędu. Wyświetlamy MsgBox z tekstem i adresem komórki, w której wystąpił błąd.
MsgBox "nie można obliczyć pierwiastka kwadratowego w komórce " & cell.Adres
5. Dodaj następujący wiersz, aby poinstruować program Excel VBA, aby wznowił wykonywanie po wykonaniu kodu błędu.
Wznów Dalej
6. Wyjdź z Edytora Visual Basic i przetestuj program.
Wynik: