По -долу ще разгледаме две програми в Excel VBA. Една програма просто игнорира грешките. Другата програма продължава изпълнението на определен ред при натискане на грешка.
Ситуация:
И двете програми изчисляват квадратния корен от числа.
Квадратен корен 1
Добавете следните кодови редове към командния бутон „Square Root 1“.
1. Първо, декларираме два Range обекта. Ние наричаме Range обекти rng и cell.
Dim rng As Range, клетка As Range
2. Инициализираме Range обекта rng с избрания диапазон.
Задайте rng = Избор
3. Искаме да изчислим квадратния корен на всяка клетка в произволно избран диапазон (този диапазон може да бъде от всякакъв размер). В Excel VBA можете да използвате цикъла For Every Next за това. Добавете следните кодови редове:
За всяка клетка В rng
Следващата клетка
Забележка: тук rng и клетка са избрани на случаен принцип, можете да използвате всякакви имена. Не забравяйте да се позовавате на тези имена в останалата част от кода.
4. Добавете следния код в цикъла.
Вкл. Грешка Възобновяване Напред
5. След това изчисляваме квадратния корен на стойност. В Excel VBA можем да използваме функцията Sqr за това. Добавете следния код в цикъла.
cell.Value = Sqr (cell.Value)
6. Излезте от редактора на Visual Basic и тествайте програмата.
Резултат:
Заключение: Excel VBA е игнорирал клетки, съдържащи невалидни стойности, като отрицателни числа и текст. Без да използвате оператора „On Error Resume Next“, ще получите две грешки. Внимавайте да използвате израза „On Error Resume Next“ само когато сте сигурни, че игнорирането на грешките е ОК.
Квадратен корен 2
Добавете следните кодови редове към командния бутон „Square Root 2“.
1. Същата програма като Square Root 1, но заменете „On Error Resume Next“ с:
При грешка GoTo InvalidValue:
Забележка: InvalidValue е произволно избран тук, можете да използвате всяко име. Не забравяйте да се позовавате на това име в останалата част от кода.
2. Извън цикъла За всеки следващ, първо добавете следния код:
Изход от Sub
Без този ред останалата част от кода (код на грешка) ще бъде изпълнена, дори ако няма грешка!
3. Excel VBA продължава изпълнението на реда, започващ с „InvalidValue:“ при натискане на грешка (не забравяйте двоеточие). Добавете следния код:
Невалидна стойност:
4. Засега запазваме кода на грешката си прост. Показваме MsgBox с текст и адреса на клетката, в която е възникнала грешката.
MsgBox "не може да изчисли квадратния корен в клетката" & cell.Address
5. Добавете следния ред, за да инструктирате Excel VBA да възобнови изпълнението след изпълнение на кода за грешка.
Възобновяване Напред
6. Излезте от редактора на Visual Basic и тествайте програмата.
Резултат: