Excel VBA при грешка Възобновете се нататък
Обработка на грешки е много полезен и важен механизъм за програмиране на езици като VBA Контрол или предотвратяване на грешки, който е аспект на работа с грешки, което означава предприемане на ефективни и значителни мерки във VBA скрипт, за да се избегне появата на съобщение за грешка. Операторът Excel VBA On Error Resume Next Next игнорира кодовия ред, който причинява грешка и продължава или насочва изпълнението към следващия ред след реда, който е причинил грешката.
ЗАБЕЛЕЖКА: При грешка Възобновяване Следващото изречение не коригира грешките по време на изпълнение, това е грешка, пренебрегвайки къде ще продължи изпълнението на програмата VB от реда, който е причинил грешката на изпълнение.По принцип, при възобновяване на грешката следващото се използва, когато искате да игнорирате грешката и да продължите или да възобновите изпълнението на кода в следващата клетка.
Видове грешки в VBA
По-долу са различните видове грешки в VBA:
- Синтаксична грешка или грешка при разбор.
- Грешка при компилиране или компилация.
- Грешка по време на изпълнение.
- Логическа грешка.
Горните грешки могат да бъдат отстранени с помощта на грешки в „Код на грешки“ и „On Error“. Грешката по време на изпълнение може да бъде предотвратена с помощта на On Error Resume Next.
Грешка по време на изпълнение на VBA:
Преди обяснението на On Error Resume Next, трябва да сте наясно с грешка по време на изпълнение, когато невъзможни математически изявления или термини присъстват в оператора, тогава възниква тази грешка по време на изпълнение.
Примери за Excel VBA при грешка Възобновете се нататък
По-долу са различните примери за On Error Resume Next в Excel VBA:
Можете да изтеглите този VBA On Error Resume Next Excel шаблон тук - VBA On Error Resume Next Excel шаблонVBA On Error Resume Next - Пример №1
Тук грешка ще бъде игнорирана и изпълнението на кода ще продължи. В по-долу споменатия пример 6 не може да бъде разделен на нула, ако го стартирате без да въведете оператора On Error Resume Next, тогава се появява под споменатата грешка по време на изпълнение.
Код:
Sub RUNTIME_1 () MsgBox 6/0 Край Sub
Ако On Error Resume Next бъде въведен в горната част на кода след SUB оператора, той игнорира грешка по време на изпълнение и преминава към следващото изречение, което води до изход 6/2 (Поле за съобщение с резултат от него).
Код:
Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub
VBA On Error Resume Next - Пример №2
Мога да използвам On Error Resume Next навсякъде в кода от началото до края. В посочения по-долу пример трябва да направя 3 изчисления, т.е.
9/3 =?
9/0 =?
9/2 =?
В гореспоменатия пример можете да наблюдавате второ изчисление, при което всяко число не може да бъде разделено на нула, т.е. 9 не може да бъде разделено на нула във втората стъпка. Да предположим, че ако стартирате макроса без да въвеждате оператор On Error Resume Next, сега мога да изпълня кода стъпка по стъпка с помощта на стъпка или клавиш F8, за да разбера как работи.
Сега изпълнявам горния код, като кликвам често върху опцията стъпка Into или клавиша F8, стъпка по стъпка. Просто копирам горния код и започвам да го изпълнявам стъпка по стъпка, за първата стъпка на изчисление се появява поле 3.
Код:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Когато изпълня втория ред на код, тогава под споменатата грешка по време на изпълнение възниква втората стъпка на код, където всяко число не може да бъде разделено на нула, т.е. 9 не може да бъде разделено на нула във втората стъпка.
Код:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Сега, ако дори кликнете върху грешката, тя не може да продължи по-нататък, където ще ме отведе до втория ред код (Той се подчертава в жълт цвят), където трябва да направя корекцията. Така че, тук, ако допълнително щракнете върху опцията Step Into или клавиша F8, третото изчисление в този код няма да бъде изпълнено.
За да коригирам или да се справя с тази грешка по време на изпълнение, трябва да използвам или изпълнявам оператора OnError Resume Next над втори код или в началото на кода под подтестата. така че той ще пропусне този ред код и преминава към третата стъпка на кода и ще изчисли стойността.
Код:
Sub RUNTIME_30 () MsgBox 9/3 при грешка Възобновяване Следващ MsgBox 9/0 MsgBox 9/2 End Sub
ИЛИ
Sub RUNTIME_31 () On Error Resume Next MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Сега добавих при грешка възобновете следващото изявление към кода, където можете да използвате някой от горния код, ако го стартирате стъпка по стъпка, ще получите изскачащо съобщение с две съобщения, едното е първият изходен код, а третият код изчисление. При грешка Възобновяване на следващите ще пренебрегне грешката по време на изпълнение във втория код и ще премине към третия код.
VBA On Error Resume Next - Пример №2
Сега ще видим комбинацията от грешка при възобновяване на грешка нататък с грешка GoTo 0. В кода по-долу, той ще пренебрегва грешките, докато достигне до грешката на грешка GoTo 0 . След отказът за грешка GoTo 0, кодът се връща назад или преминава към нормална проверка на грешки и задейства очакваната грешка напред.
Код:
Sub onError_Go_to_0_with_Resume_next () При грешка Възобновете Next Kill "C: TempFile.exe" При грешка GoTo 0 Обхват ("A1") Стойност = 100 / "PETER" End Sub
Когато пусна горния код, той ще покаже грешката на разделението, т.е. Несъответствие на типа (числовата стойност не може да бъде разделена на текст).
Сега можете да запазите работната си книга като „Работна книга с възможност за макрос на Excel“. Като кликнете върху запазване като в левия ъгъл на работния лист.
когато отворите този Excel файл отново, можете да използвате по-долу споменатия клавиш за бърз достъп, т.е.
Функция + Alt + F11 клавиш за бърз достъп ви помага да получите достъп до всички създадени макрокодове на работната книга. Функцията + Alt + F8 клавишът за бърз достъп ви помага да отворите диалогов прозорец „Макрос“, който съдържа всички имена на макроси, където можете да стартирате конкретен макро код по ваш избор.
Неща, които трябва да запомните
- Грешката във времето на изпълнение ще бъде безшумно хваната и съхранена в глобалния Err обект
- При грешка Възобновяване на следващите обикновено предотвратява прекъсване в изпълнението на кода.
- Свойствата на обекта за грешка (Err Object) се изчистват автоматично, когато Resume Next се използва в процедура за обработка на грешки
Препоръчителни статии
Това е ръководство за VBA On Error Resume Next. Тук обсъждаме различни видове грешки в VBA Excel, заедно с някои практически примери и шаблон за Excel, който може да се сваля. Можете да разгледате и другите ни предложени статии -
- Пълно ръководство за макроси на VBA
- VBA DateDiff (Примери с шаблон на Excel)
- Как да използвате търсенето на цел във VBA?
- VBA Protect Sheet със синтаксис
- VBA Environment