VBA при грешка Отидете до 0 - Как да използвам при грешка GoTo 0 в Excel VBA?

Excel VBA при грешка отидете на 0

VBA On Error GoTo 0 е оператор за обработка на грешки, използван за деактивиране на активирания манипулатор на грешки в процедурата. Той е посочен като „Disabler Handler Disabler“.

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

И двете „При грешка възобновяване нататък“ и „При грешка GoTo 0“ са двойки, които трябва да се използват в тандем за ефективността на кода. За да се справим с грешката, трябва да започнем с изявлението „On Error Resume Next“ и да прекратим този манипулатор на грешки. Трябва да използваме изявлението „On Error GoTo 0“.

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

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

Например погледнете кода по-долу.

Код:

Sub On_ErrorExample1 () Работни листове ("Sheet1"). Изберете диапазон ("A1"). Стойност = 100 работни листа ("Sheet2"). Изберете диапазон ("A1"). Стойност = 100 End Sub

Това, което прави горният код, е, че първо ще избере работния лист с име „Sheet1“ и в клетка A1 ще вмъкне стойността 100.

Код:

Работни листове ("Sheet1"). Изберете диапазон ("A1"). Стойност = 100

След това ще избере работния лист с име „Sheet2” и ще вмъкне същата стойност.

Код:

Работни листове ("Sheet2"). Изберете диапазон ("A1"). Стойност = 100

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

Няма листове, наречени „Sheet1“ и „Sheet2“. Когато стартираме кода, той ще срещне грешка като по-долу.

Тъй като няма лист, наречен „Лист1“, той срещна грешка „Индекс извън обхвата“. За да се справя с тази грешка, ще добавя изявление на манипулатора на грешки „При повторно въвеждане на грешка в горната част на макроса.

Код:

Sub On_ErrorExample1 () При грешка Възобновяване на следващите работни листове ("Sheet1"). Изберете диапазон ("A1"). Стойност = 100 работни листа ("Sheet2"). Изберете диапазон ("A1"). Стойност = 100 End Sub

Сега стартирайте кода и вижте какво ще се случи.

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

Представете си сценария, при който трябва да игнорираме грешката в случай на липса на работен лист „Sheet1“, но трябва да уведомим, ако няма работен лист, наречен „Sheet2“.

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

В този пример просто трябва да игнорираме грешката за първия работен лист, но за втория лист нататък. Нуждаем се от грешка, ако няма работен лист „Sheet2“. Така че след първия код на работния лист се добавя ред за деактивиране на грешка В грешка GoTo 0.

Код:

Sub On_ErrorExample1 () При грешка Възобновяване на следващите работни листове ("Sheet1"). Изберете диапазон ("A1"). Стойност = 100 При грешка GoTo 0 Worksheets ("Sheet2"). Изберете диапазон ("A1"). Value = 100 End Sub

Сега изпълнете кода ред по ред, за да видите въздействието, като натиснете клавиша F8.

Сега, ако натиснете клавиша F8, след като изпълнението на кода премине към следващия ред, и задачата за активния ред ще бъде изпълнена. Сега активната линия (жълто оцветена линия) е “On Error Resume Next” манипулатор на грешки и манипулаторът на грешки ще бъде активиран.

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

В предишния опит срещнахме грешки, но натиснете клавиша F8 още веднъж и вижте магията.

Без да дава каквато и да е грешка, той възобновява изпълнението на кода, въпреки че няма работен лист „Sheet2“ за избор. Сега отново натиснете F8.

Тъй като не е имало Sheet1, той не може да вмъкне стойността в клетка A1 като 500, но това, което прави е, че ще вмъкне стойността 500 в клетка A1, който и да е работен лист е активен. Моят активен лист, когато изпълнявам кода, беше “Sheet3”, така че стойността на 100 се вмъква в клетката A1.

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

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

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

Неща, които трябва да запомните тук

  • Както при грешка при възобновяване след това, така и при грешка GoTo 0 трябва да се използва като „ Разрешител за обработка на грешки “ и „ Забрана за обработка на грешки “.
  • Всеки ред от кодове между тези две инструкции среща грешка, тя ще бъде игнорирана.
  • Ако има оператор On Error GoTo 0, след излизането от подпроцедурата манипулаторът на грешки ще бъде деактивиран.

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