VBA при грешка GoTo - Видове отчети за грешки във VBA

Excel VBA при грешка GoTo

Грешките са неразделна част от всеки език за кодиране и макросите VBA не се различават от това. Според мен установяването на причината за грешката е 90% от свършената работа, а 10% се крие в това как да се поправи тази грешка. Във всеки език за кодиране кодерите използват свой собствен начин за обработка на грешки в тяхното кодиране, така че и ние използваме при кодирането на VBA. Често пъти трябва да игнорираме грешката или често пъти може да искаме да отидем на конкретни неща, когато възникне грешката. „При грешка“ е изявлението, което трябва да използваме във VBA за обработка на грешки.

Това твърдение има три вида изявления и по-долу е списъкът.

  1. При грешка отидете на 0
  2. При грешка Отиди (етикет)
  3. При грешка Възобновяване нататък

В тази статия ще видим как тези три изявления се използват в кодирането на VBA за обработка на всякакъв вид грешки.

Как да използвам VBA за изявления за грешки?

# 1 - След грешка възобновете

Както се казва в самото изявление, „On Error Resume Next“ означава, когато грешката възникне в кода „resume“ следващия ред на кода, като се игнорира кодът на грешката. Сега погледнете кода по-долу.

В кода по-долу споменах имената на работния лист и помолих да въведа стойността в първата клетка като „Тестване на грешки“.

Код:

Sub On_Error_Resume_Next () Работни листове ("Ws 1"). Изберете диапазон ("A1"). Value = "Тестване на грешки" Работни листове ("Ws 2"). Изберете диапазон ("A1"). Value = "Тестове за грешка" Работни листове ( "Ws 3"). Изберете диапазон ("A1"). Value = "Тестване на грешки" Работни листове ("Ws 4"). Изберете диапазон ("A1"). Value = "Тестване на грешки" End Sub

Сега имам по-долу работни листове в работната си книга.

  • Ще пусна кода и ще видя какво ще стане.
  • Получихме грешка „Индекс извън обхвата“, щракнете върху „Отстраняване на грешки“, за да видите в кой ред получихме грешката.
  • Така че в реда „Работни листове („ Ws 3 “). Изберете“ получихме грешка. Това е така, защото в нашата работна книга няма работен лист с име „Ws 3“, поради което възникна грешка.

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

  • Всичко, което трябва да направим, е да добавим реда „При грешка възобновяване нататък“ в началото на макроса.

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

# 2 - При грешка GoTo 0

Това не е манипулатор на грешки, а по-скоро активиране на съобщение за грешка, след като деактивираме съобщението за грешка, като използваме изявлението „При грешка възобновяване след това“.

Ако използвате оператора „Resume Next“, макросите на VBA започват да игнорират всякакъв вид грешка и продължават да продължават със следващия ред кодове. Но ние не искаме това да се случва през цялото време, защото някои грешки трябва да игнорираме умишлено, други се нуждаем от известие.

Ако някой конкретен набор от кодове изхвърли грешка в този блок код, само ние трябва да игнорираме грешки в други части на кода. Не искаме да игнорираме грешката.

  • Погледнете изображението по-долу за използването на изявлението „On Error GoTo 0“.

Така че сега грешките ще бъдат игнорирани, докато кодът открие активиращото устройство за уведомяване за грешка “On Error GoTo 0”, след като този ред код изпълни макросите обратно към нормалното и започне да изхвърля съобщения за грешки, както обикновено.

# 3 - При грешка GoTo Label

Видяхме как да игнорираме грешката и как да активираме обратно известяването за грешка. Сега, използвайки този метод, можем да преминем към определен ред код.

В този метод „етикет“ означава, че можем да дадем всяко име на този етикет, като същият етикет трябва да бъде даден и на необходимия ред код.

Например, погледнете същия код от горния пример.

Сега нека изпълним кодовия ред по ред, като натиснем функционалния клавиш F8.

Сега макросът ще прочете оператора за обработка на грешки; натиснете клавиша F8 изпълнете първите 2 кода на работния лист.

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

Тъй като макросът срещна грешка в долния ред на кода, той премина към етикета за обработка на грешки „ErrorMessage“, който беше описан чрез изявлението „On Error GoTo (Label)“.

Сега полето за съобщение ще покаже съобщението като „Възникна грешка и излизане от макроса“.

Неща за запомняне

  • Vba On Error GoTo 0 ще активира известието за грешка отново, така че не забравяйте да добавите това след предоставяне на манипулатор на грешки.
  • Трябва да сте абсолютно сигурни в коя част от кода искате да игнорирате грешката, така че приложете манипулатора на грешки само за този блок код.

Интересни статии...