Помилка ігнорування VBA

Цей підручник покаже, як VBA ігнорує помилку під час запуску коду.

Іноді, коли ви створюєте код VBA, ви дійсно хочете, щоб VBA ігнорувала рядок коду, коли виникає помилка. Це насправді може бути дуже корисним, якщо, наприклад, ви хочете видалити аркуш, якщо він існує, але ігноруйте цей рядок коду, якщо аркуша немає.

(Докладніше про помилки VBA див. У нашому Посібнику з обробки помилок)

Увімкнути Помилка Відновити Далі

Щоб ігнорувати рядок коду в процедурі, ми використовуємо Увімкнути Помилка Відновити Далі заяву.

123456 Sub TestErrorIgnore ()Увімкнути Помилка Відновити ДаліActiveWorkbook.Sheets ("Sheet4"). ВиберітьActiveSheet.Delete'більше коду тутEnd Sub

У наведеному вище прикладі an Увімкнути Помилка Відновити Далі заява розміщена у верхній частині процедури. Потім код будується, щоб вибрати Sheet4, а потім видалити його.

Однак через Увімкнути Помилка Відновити Далі оператор, якщо код не знаходить Sheet4, він просто перейде до наступного рядка і видалить будь -який активний аркуш, який він знайде.

Це може бути досить небезпечно, якщо ви хотіли видалити лише аркуш 4, а не лише активний аркуш. Щоб запобігти цій помилці, ми можемо встановити змінну на аркуш 4 і видалити лише той аркуш, якщо він існує.

1234567 Sub TestErrorIgnore ()Затемнити як робочий аркушУвімкнути Помилка Відновити ДаліВстановити ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'більше коду тутEnd Sub

Тепер, коли код запущено, буде видалено лише Sheet4 ІФ Sheet4 насправді існує. Якщо аркуша 4 не існує, VBA ігнорує помилку і продовжує роботу.

Інший приклад цього - якщо ви хочете видалити всі аркуші зі своєї книги за допомогою циклу. Оскільки книга Excel має мати принаймні один аркуш, код видалить усі аркуші, крім одного.

123456 Sub DeleteSheets ()Затемнити як робочий аркушДля кожного ws В ActiveWorkbook.Sheetsws.ВидалитиНаступний wsEnd Sub

Код вище зупиниться з помилкою.

Клацання Відлагоджувати приведе нас до коду з виділеним образливим рядком!

Однак, додавши Увімкнути Помилка Відновити Далі рядок коду запобігає помилці, і програма завжди залишатиме один аркуш у книзі.

12345678 Sub DeleteSheets ()'додати сюди рядок помилкиУвімкнути Помилка Відновити ДаліЗатемнити як робочий аркушДля кожного ws В ActiveWorkbook.Sheetsws.ВидалитиНаступний wsEnd Sub

Помилка Перейти до 0

Часто, якщо ви використовуєте Увімкнути Помилка Відновити Далі щоб ігнорувати помилку, ви хочете, щоб помилки були перехоплені пізніше в коді, або ви хочете, щоб ваш код припинив роботу, якщо помилка станеться в майбутньому. Ми можемо знову налаштувати обробку помилок, щоб код знову зламався на помилки, додавши рядок On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Затемнити як робочий аркушУвімкнути Помилка Відновити ДаліВстановити ws = ActiveWorkbook.Sheets ("Sheet4")ws.ВидалитиПомилка Перейти до 0'більше коду тутEnd Sub

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave