Как можете да идентифицирате и обработвате всяка възможна грешка в Excel 2016? Често не можете. За щастие, VBA предоставя друг начин за справяне с тези досадни грешки.
Преразглеждане на процедурата EnterSquareRoot
Разгледайте следния код. Подпрограмата използва универсален израз On Error, за да улови всички грешки и след това да провери дали InputBox е отменен.
Под EnterSquareRoot5()
Dim Num като вариант
Затъмни съобщение като низ
' Настройте обработката на грешки
При грешка GoTo BadEntry
' Подкана за стойност
Num = InputBox („Въведете стойност“)
' Излезте, ако бъде отменено
Ако Num = „“ Излезте от Sub
' Вмъкнете квадратния корен
ActiveCell.Value = Sqr(Num)
Изход Sub
BadEntry:
Msg = „Възникна грешка.“ & vbNewLine & vbNewLine
Msg = Msg & „Уверете се, че е избран диапазон,“
Msg = Msg & „листът не е защитен,“
Msg = Msg & „и въвеждате неотрицателна стойност.“
MsgBox Msg, vbCritical
Край под
Тази рутина улавя всякакъв тип грешка по време на изпълнение. След улавяне на грешка по време на изпълнение, ревизираната процедура EnterSquareRoot показва това съобщение. Това поле за съобщение описва най-вероятните причини за грешката.
Грешка по време на изпълнение в процедурата генерира това полуполезно съобщение за грешка.
При грешка не работи?
Ако изявлението On Error не работи, както се рекламира, трябва да промените една от настройките си:
Активирайте VBE.
Изберете командата Инструменти → Опции.
Щракнете върху раздела Общи в диалоговия прозорец Опции.
Уверете се, че настройката Прекъсване на всички грешки е премахната.
Ако тази настройка е избрана, Excel по същество игнорира всички изявления On Error. Обикновено искате да запазите опциите за улавяне на грешки настроени на Прекъсване при необработени грешки.
Относно изявлението за грешка
Използването на изявление On Error във вашия VBA код ви позволява да заобиколите вградената обработка на грешки в Excel и да използвате свой собствен код за обработка на грешки. В предишния пример грешка по време на изпълнение кара изпълнението на макроса да прескочи към израза с етикет BadEntry. В резултат на това избягвате неприветливите съобщения за грешки на Excel и можете да покажете свое собствено съобщение на потребителя.
Забележете, че примерът използва израз за изход непосредствено преди етикета BadEntry. Това изявление е необходимо, защото не искате да изпълнявате кода за обработка на грешки, ако грешката не възникне.