Как да използвате изявлението OnError в Excel 2016 VBA

Когато трябва да се справите с грешки в Excel VBA, можете да използвате израза OnError. Има обаче няколко неща, които първо трябва да знаете. Можете да използвате изявлението On Error по три начина.

Синтаксис Какво прави
При грешка GoTo етикет След изпълнение на този израз, VBA възобновява изпълнението на
оператора, следващ посочения етикет. Трябва да включите двоеточие
след етикета, така че VBA да го разпознае като етикет.
При грешка Отидете до 0 След като изпълни този израз, VBA възобновява нормалното си
поведение при проверка на грешки. Използвайте този израз, след като използвате някой от
другите оператори On Error или когато искате да премахнете обработката
на грешки във вашата процедура.
При грешка Продължете напред След като изпълни този израз, VBA просто игнорира всички грешки
и възобновява изпълнението със следващия оператор.

Възобновяване след грешка

В някои случаи просто искате рутината да приключи грациозно, когато възникне грешка. Например, можете да покажете съобщение, описващо грешката и след това да излезете от процедурата. (Примерът EnterSquareRoot5, показан по-рано, използва тази техника.) В други случаи искате да се възстановите от грешката, ако е възможно.

За да се възстановите от грешка, трябва да използвате оператор Resume. Това изчиства условието за грешка и ви позволява да продължите изпълнението на някакво място. Можете да използвате изявлението Resume по три начина.

Синтаксис Какво прави
Продължи Изпълнението се възобновява с оператора, който е причинил грешката. Използвайте
това, ако вашият код за обработка на грешки коригира проблема и
е добре да продължите.
Възобновяване Следващ Изпълнението се възобновява с оператора непосредствено след
оператора, причинил грешката. Това по същество игнорира
грешката.
Етикет за възобновяване Изпълнението се възобновява на етикета, който сте посочили.

Следният пример използва израз Resume след възникване на грешка:

Под EnterSquareRoot6()
  Dim Num като вариант
  Затъмни съобщение като низ
  Dim Ans като цяло число
Опитай пак:
' Настройте обработката на грешки
  При грешка GoTo BadEntry
' Подкана за стойност
  Num = InputBox („Въведете стойност“)
  Ако Num = „“ Излезте от Sub
' Вмъкнете квадратния корен
  ActiveCell.Value = Sqr(Num)
  Изход Sub
BadEntry:
  Msg = Err.Number & “: “ & Error(Err.Number)
  Msg = Msg & vbNewLine & vbNewLine
  Msg = Msg & „Уверете се, че е избран диапазон,“
  Msg = Msg & „листът не е защитен,“
  Msg = Msg & „и въвеждате неотрицателна стойност.“
  Msg = Msg & vbNewLine & vbNewLine & „Опитайте отново?“
  Ans = MsgBox(Msg, vbYesNo + vbCritical)
  Ако Ans = vbYes, тогава възобновете опитайте отново
Край под

Тази процедура има друг етикет: TryAgain. Ако възникне грешка, изпълнението продължава на етикета BadEntry и кодът показва съобщението по-долу. Ако потребителят отговори, като щракне върху Да, операторът Resume започва и изпълнението се връща обратно към етикета TryAgain. Ако потребителят щракне върху Не, процедурата приключва.

Как да използвате изявлението OnError в Excel 2016 VBA

Ако възникне грешка, потребителят може да реши дали да опита отново.

Обърнете внимание, че съобщението за грешка включва и номера на грешката, заедно с „официалното“ описание на грешката.

Инструкцията Resume изчиства условието за грешка, преди да продължи. За да видите това, опитайте да замените следния израз за предпоследния израз в предходния пример:

Ако Ans = vbYes Тогава отидете на TryAgain

Кодът не работи правилно, ако използвате GoTo вместо Resume. За да демонстрирате, въведете отрицателно число. Получавате подкана за грешка. Щракнете върху Да, за да опитате отново и след това въведете друго отрицателно число. Тази втора грешка не е уловена, защото първоначалното условие за грешка не е изчистено.

Обработка на грешки с две думи

За да ви помогнем да поддържате правилно целия този бизнес с обработка на грешки, ето кратко и мръсно обобщение. Блок код за обработка на грешки има следните характеристики:

  • Започва веднага след етикета, посочен в изявлението On Error.

  • Той трябва да бъде достигнат от вашия макрос само ако възникне грешка. Това означава, че трябва да използвате израз като Exit Sub или Exit Function непосредствено преди етикета.

  • Може да изисква изявление за автобиография. Ако изберете да не прекъсвате процедурата, когато възникне грешка, трябва да изпълните оператор Resume, преди да се върнете към основния код.

Да знаете кога да игнорирате грешки

В някои случаи е напълно нормално да игнорирате грешки. Тогава влиза в игра изявлението On Error Resume Next.

Следващият пример минава през всяка клетка в избрания диапазон и преобразува стойността в нейния квадратен корен. Тази процедура генерира съобщение за грешка, ако някоя клетка в селекцията съдържа отрицателно число или текст:

ПодселекцияSqrt()
  Затъмнена клетка като диапазон
  Ако TypeName(Selection) <> “Range” След това излезте от Sub
  За всяка клетка в селекция
    клетка.стойност = Sqr(клетка.стойност)
  Следваща клетка
Край под

В този случай може да искате просто да пропуснете всяка клетка, която съдържа стойност, която не можете да преобразувате в корен квадратен. Можете да създадете всякакви възможности за проверка на грешки, като използвате If-Then структури, но можете да измислите по-добро (и по-просто) решение, като просто игнорирате възникващите грешки.

Следната рутина постига това чрез използване на оператора On Error Resume Next:

ПодселекцияSqrt()
  Затъмнена клетка като диапазон
  Ако TypeName(Selection) <> “Range” След това излезте от Sub
  При грешка Продължете напред
  За всяка клетка в селекция
    клетка.стойност = Sqr(клетка.стойност)
  Следваща клетка
Край под

Като цяло можете да използвате изявление On Error Resume Next, ако смятате, че грешките са безобидни или несъществени за вашата задача.


Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирам Microsoft Word да отваря файлове в режим само за четене в Windows Microsoft Word отваря файлове в режим само за четене, което прави невъзможно редактирането им? Не се притеснявайте, методите са по-долу

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате грешки при отпечатването на неправилни документи на Microsoft Word Грешките при отпечатването на документи на Word с променени шрифтове, разхвърляни абзаци, липсващ текст или изгубено съдържание са доста чести. Въпреки това недейте

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Ако сте използвали писалката или маркера, за да рисувате върху слайдовете на PowerPoint по време на презентация, можете да запазите чертежите за следващата презентация или да ги изтриете, така че следващия път, когато го покажете, да започнете с чисти слайдове на PowerPoint. Следвайте тези инструкции, за да изтриете чертежи с писалка и маркери: Изтриване на линии една в […]

Съдържание на библиотеката за стилове в SharePoint 2010

Съдържание на библиотеката за стилове в SharePoint 2010

Библиотеката със стилове съдържа CSS файлове, файлове с разширяем език на стиловия език (XSL) и изображения, използвани от предварително дефинирани главни страници, оформления на страници и контроли в SharePoint 2010. За да намерите CSS файлове в библиотеката със стилове на сайт за публикуване: Изберете Действия на сайта→Преглед Цялото съдържание на сайта. Появява се съдържанието на сайта. Библиотеката Style се намира в […]

Форматирайте числата в хиляди и милиони в отчети на Excel

Форматирайте числата в хиляди и милиони в отчети на Excel

Не затрупвайте аудиторията си с огромни числа. В Microsoft Excel можете да подобрите четливостта на вашите табла за управление и отчети, като форматирате числата си така, че да се показват в хиляди или милиони.

Как да споделяте и следвате сайтове на SharePoint

Как да споделяте и следвате сайтове на SharePoint

Научете как да използвате инструменти за социални мрежи на SharePoint, които позволяват на индивиди и групи да общуват, да си сътрудничат, споделят и да се свързват.

Как да конвертирате дати в юлиански формати в Excel

Как да конвертирате дати в юлиански формати в Excel

Юлианските дати често се използват в производствени среди като времеви печат и бърза справка за партиден номер. Този тип кодиране на дата позволява на търговците на дребно, потребителите и обслужващите агенти да идентифицират кога е произведен продуктът и по този начин възрастта на продукта. Юлианските дати се използват и в програмирането, военните и астрономията. Различно […]

Как да създадете уеб приложение на Access

Как да създадете уеб приложение на Access

Можете да създадете уеб приложение в Access 2016. И така, какво всъщност е уеб приложение? Е, уеб означава, че е онлайн, а приложението е просто съкращение от „приложение“. Персонализирано уеб приложение е онлайн приложение за база данни, достъпно от облака с помощта на браузър. Вие създавате и поддържате уеб приложението в настолната версия […]

Лента за бързо стартиране в SharePoint 2010

Лента за бързо стартиране в SharePoint 2010

Повечето страници в SharePoint 2010 показват списък с връзки за навигация в лентата за бързо стартиране в лявата част на страницата. Лентата за бързо стартиране показва връзки към представено съдържание на сайта, като списъци, библиотеки, сайтове и страници за публикуване. Лентата за бързо стартиране включва две много важни връзки: Връзка към цялото съдържание на сайта: […]

Какво означават съобщенията за грешка на Solver в Excel?

Какво означават съобщенията за грешка на Solver в Excel?

За прости проблеми Solver в Excel обикновено бързо намира оптималните стойности на променливата Solver за целевата функция. Но в някои случаи Solver има проблеми с намирането на стойностите на променливата Solver, които оптимизират целевата функция. В тези случаи Solver обикновено показва съобщение или съобщение за грешка, което описва или обсъжда проблема, който […]