VBA про помилку Перейти до 0 | Як використовувати при помилці GoTo 0 в Excel VBA?

Excel VBA Про помилку Перейти до 0

VBA On Error GoTo 0 - це оператор обробника помилок, який використовується для вимкнення ввімкненого обробника помилок у процедурі. Це називається "Вимикач обробника помилок".

Обробка помилок у будь-якій з мов програмування - це майстер-клас, який повинні розуміти всі кодери. Мова програмування VBA теж, і у нас також є методи обробки помилок на цій мові програмування. “On Error Resume Next” увімкне обробник помилок, а “On Error GoTo 0” вимкне ввімкнений обробник помилок.

Обидва варіанти: «Про помилку відновити далі» та «Про помилку GoTo 0» - це пари, які потрібно використовувати в тандемі для ефективності коду. Щоб обробляти помилки, нам слід розпочати з висловлення “Про помилку, відновіть далі”, а щоб закінчити цей обробник помилок, нам потрібно використовувати вираз “Про помилку Перейти до 0”.

Будь-який рядок, написаний між цими висловлюваннями, ігноруватиме будь-яку помилку, яка мала місце в процесі.

Як використовувати заяву про помилку GoTo 0?

Ви можете завантажити цей VBA про помилку Перейти до шаблону Excel тут - VBA Про помилку Перейти до шаблону Excel

Для прикладу перегляньте наведений нижче код.

Код:

 Sub On_ErrorExample1 () Worksheets ("Sheet1"). Select Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Що робить наведений вище код, це те, що він спочатку вибирає аркуш із назвою “Sheet1”, а в комірку A1 вставляє значення 100.

Код:

Робочі аркуші ("Аркуш1"). Виберіть діапазон ("А1"). Значення = 100

Потім він вибере аркуш із назвою “Аркуш2” і введе те саме значення.

Код:

Робочі аркуші ("Аркуш2"). Виберіть діапазон ("А1"). Значення = 100

Зараз у моїй книзі є аркуші нижче.

Немає аркушів, що називаються “Аркуш1” і “Аркуш2”, коли ми запускаємо код, він матиме помилку, як показано нижче.

Оскільки не існує аркуша з іменем "Аркуш1", він зіткнувся з помилкою "Індекс поза межами діапазону". Щоб обробити цю помилку, я додаю заяву обробника помилок “Повернення помилки далі” вгорі макросу.

Код:

 Sub On_ErrorExample1 () Про помилку Відновити наступні робочі аркуші ("Аркуш1"). Виберіть діапазон ("А1"). Значення = 100 аркушів ("Аркуш2"). Виберіть діапазон ("А1"). Значення = 100 Кінець 

Тепер запустіть код і подивіться, що станеться.

Він не видасть жодних повідомлень про помилки, оскільки ввімкнено оператор обробки помилок "Повернути помилку далі"

Уявіть собі сценарій, коли нам потрібно ігнорувати помилку у випадку недоступності робочого аркуша “Sheet1”, але нам потрібно повідомити, якщо немає аркуша з назвою “Sheet2”.

Оскільки вгорі ми додали On Error Resume Next , він почав обробляти помилку, але водночас нам потрібно вказати, скільки рядків нам потрібно ігнорувати цю помилку.

У цьому прикладі нам просто потрібно проігнорувати помилку для першого аркуша, але для другого аркуша надалі нам потрібно, щоб помилка мала місце, якщо немає аркуша “Аркуш2”. Отже, після першого коду робочого аркуша додається рядок відключення помилки On Error GoTo 0.

Код:

 Sub On_ErrorExample1 () Про помилку Відновлення наступних аркушів ("Аркуш1"). Виберіть діапазон ("А1"). Значення = 100 Помилка Перейдіть до 0 аркушів ("Аркуш2"). Виберіть діапазон ("А1"). Значення = 100 Кінець суб 

Тепер запустіть код рядок за рядком, щоб побачити вплив, натиснувши клавішу F8.

Тепер, якщо ви натиснете клавішу F8, як тільки виконання коду перейде до наступного рядка, і буде виконано активне завдання рядка. Тепер активним рядком (жовтого кольору) є обробник помилок “On Error Resume Next”, і обробник помилок буде ввімкнено.

Now any error occurs it will be ignored until it executes the error handler disables code “On Error GoTo 0” statement.

In the previous attempt, we have encountered errors but press the F8 key one more time and see the magic.

Without giving any kind of error it has resumed execution of the code even though there is not worksheet “Sheet2” to select. Now press F8 again.

Since there was no Sheet1 it cannot insert the value in the A1 cell as 500 but what it does is it will insert the value of 500 to cell A1 whichever worksheet is active. My active sheet when I am executing the code was “Sheet3”, so the value of 100 is inserted to the cell A1.

Now the active line of code is “On Error GoTo 0”, by pressing the F8 key this line task will be executed.

Since “On Error GoTo 0” is executed it has stopped the process of error handling and again starts to show errors if any occurs. Press the F8 key and see the error.

In the previous case without On Error GoTo 0, it has ignored this error as well, but since we have added error handler disabler it has started to show the error again.

Things to Remember here

  • Both On Error Resume Next and On Error GoTo 0 needs to be used as “Error Handler Enabler” and “Error Handler Disabler”.
  • Any line of codes between these two statements encounters an error it will be ignored.
  • If there is On Error GoTo 0 statement then after the exit of the subprocedure error handler will be disabled.