VBA обработка на грешки - Ръководство за обработка на грешки в Excel VBA

Обработка на грешки в Excel VBA

Във VBA, когато работим с кодове, може да срещнем много различни видове грешки и как да отстраняваме тези грешки е известно като обработка на грешки, сега в синтаксиса може да има някои грешки, които самият Excel го подчертава, но когато има някаква грешка което е извън обхвата или нещо, което не съществува, Excel ни изскача за същото, важно е да знаем кой код за грешка е за коя грешка, за да идентифицираме грешката в кода.

В Excel VBA, докато изпълняваме произволен набор от кодове, получаваме някакъв вид грешки. Някои от тези грешки са синтаксични грешки; някои от тях са неизпълними. Синтаксичната грешка е, когато е направена от потребителя, е подчертана в червен цвят от самия Excel. Но когато има някакъв друг вид грешка във времето на изпълнение, как да се справим и как да стигнем отвъд това, ще разгледаме в тази статия.

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

Това е примерен код, когато се изпълни, ще върне написаното във функцията msgbox. Но както можем да видим, че във втория ред на кода има 4/0, което не е възможно в математически план, така че ще върне грешка във времето на изпълнение. Нека изпълним горния код и да видим грешката, която ще получим.

Това е грешката, която получаваме при изпълнение на дадения код. Сега как да се справим с тази грешка е направена от Error Handling.

Има два метода за обработка на грешки, които са:

  1. При грешка Goto и
  2. При грешка Възобновяване нататък.

Обяснение

Както е обяснено по-горе, получаваме много видове грешки във VBA. Някои са синтаксис, а други са време за изпълнение. Синтаксисните грешки вече са подчертани в червен цвят, например вижте екранна снимка,

Докато другата е грешки във времето на изпълнение. По принцип Excel ще направи следните три неща, или ще покаже грешка, или ще игнорира тази грешка, или ще покаже определен набор от инструкции. За да изпълняваме такива задачи, трябва да дадем инструкции и това се нарича Обработка на грешки.

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

Пример # 1

За първия пример нека вземем първия демонстрационен код, който взехме. В горния пример видяхме, че кодът дава грешка във времето на изпълнение при втората функция msgbox.

След отваряне на подфункцията напишете следния код,

Код:

Подпроба () При грешка Възобновяване Следваща MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Край Под

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

Има друг метод за справяне с грешката е VBA Goto Statement. Предоставяме Excel като дестинация, към която да отидете, когато открие грешка. Вместо предишния код за обработка на грешки, ние вмъкнахме, запишете следния код,

Код:

Подпроба () При грешка GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub

Даваме на Excel Az като дестинация, към която да отидем, ако открие грешка. Сега след msgbox напишете друг код, както е показано по-долу,

Код:

Подпроба () При грешка GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Готово: Излезте от Sub

Сега трябва да дефинираме дестинацията az като това, което трябва да направи, когато Excel открие грешка в кода.

Код:

Подпроба () При грешка GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Готово: Излезте от Sub az: MsgBox "Това е грешка" & Err.Description End Sub

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

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

Описанието за грешка по-горе в кода ни помага да покажем какво точно е възникнала грешката в нашия код.

Пример # 2

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

Имаме донякъде подобна грешка от пример 1. Грешката е в ред d = i / b. Сега ще се справим с тези грешки, като използваме двата метода, обяснени по-горе.

След отваряне на подфункцията напишете следния код,

Код:

Sub Sample2 () За грешка Възобновяване Следваща bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub

Now when we execute our code, we can see that it ignores the second line and just displays the value for C.

The above error handler was a resume next, and now we will use the Go to wherein we will tell we excel a destination to go when it encounters an error. Write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d

The bx is a destination given when it encounters an error after msgbox D write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

Sub Sample2 () При грешка GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub bx: MsgBox „Това е поредната грешка“ & Err.Description End Sub

Сега, когато изпълняваме кода, можем да видим, че Excel първо ни дава стойността за C.

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

Ето как се справяме с нормалните грешки по време на работа в Excel VBA.

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

Има няколко неща, които трябва да запомним относно обработката на грешки:

  1. При грешка Възобновяване нататък игнорира грешката.
  2. On Error GoTo Дава на Excel дестинация, когато срещне грешка.
  3. Описанието се използва, за да покаже точната грешка, възникнала при потребителя.

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