VBA при грешка

VBA On Error е лесен метод за обработка на неочаквани изключения в Excel Macros. Известно е, че не можем да напишем код без грешка. Понякога писането на голям код може да ни даде грешката дори по време на съставянето. За да избегнем този вид ситуация, ние добавяме съобщение за грешка, което вместо да ни даде правилния отговор или код за грешка, ще ни покаже съобщението с код за грешка. Това ще изглежда, че получихме резултата от нашето изчисление, но кода за грешка ще бъде отпечатан.

Как да използвате Excel VBA при декларация за грешка в Excel?

Има 3 начина за грешка в VBA. Нека разберем различни начини с някои примери.

Пример №1

Първият тип грешка е грешка при компилиране на код, която идва, когато код е недеклариран или невъзможни променливи. За да разберем повече ще използваме прост математически израз на разделението. За това отидете в менюто Вмъкване на VBA и изберете Модул, както е показано по-долу.

Сега отворете Подкатегория и добавете всяко име. Както използваме On Error, така сме нарекли същото.

 Sub OnError () End Sub 

Сега дефинирайте всички 2 или 3 Цели. Тук ние приемаме X и Y като цели числа.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число край подс 

Сега, както беше обсъдено по-горе, ще изчислим математическия израз на разделяне. За X ще поставим символ в Numerator и ще го разделим 0. И Y ще бъде 20/2, което е пълни числа.

 Sub OnError () Dim X като цяло число, Y като цяло число X = тест / 0 Y = 20/2 край Sub 

Сега стартирайте кода, като използвате клавиша F5 или кликнете върху бутона за възпроизвеждане, както е показано по-долу. Ще получим грешка по време на изпълнение 6, която показва грешка с текст над номер.

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

 Sub OnError () Dim X като цяло число, Y като цяло число при грешка Възобновете Следващ X = Тест / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

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

Пример №2

В този пример ще разгледаме онова математическо деление, което дава безкраен резултат, но при кодирането, то ще доведе до # DIV / 0 резултат. За да демонстрираме това, ще разгледаме още едно цяло число Z заедно с X и Y в подкатегория, както е показано по-долу.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число край подс 

Сега рамкирайте всички числа X, Y и Z с математически израз на разделяне и за да го отпечатате, използвайте MsgBox функцията в VBA на резултата от всяко цяло число.

По-долу за Integer X сме разделили 10 на 0, 20 на 2 и 30 на 4.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Сега стартирайте кода с помощта на клавиша F5 или ръчно, както е показано по-долу.

Както можем да видим на горната снимка на грешка 11 на време на изпълнение, което означава, че грешката е свързана с числото. Сега за преодоляване на това добавете един ред On Error Resume Next преди математически израз, както е показано по-долу.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число при грешка Възобновете Следващ X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Сега ако стартираме кода, ще получим нула за първо цяло число X, а за Y и Z ще получим съответните отговори на разделянето, както е показано по-долу.

Пример №3

Вторият вид грешка се наблюдава, когато въвеждаме неправилно въвеждане на данни в код. За това ще разгледаме 3 цели числа X, Y и Z, като отворим подкатегория във VBA, както е показано по-долу.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число край подс 

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

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

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

Сега, за да премахнете тази грешка, използвайте текст On Error GoTo с думата „„ Резултат за пропускане на съобщение за грешка и получете изхода, който работи добре, както е показано по-долу.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число при грешка GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

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

При грешка GoTo ZResult ни помага директно да прескачаме споменатото цяло число от точки за резултат, както направихме за цяло число Z.

Пример №4

В третия тип грешка, когато стартираме кода и VBA не е в състояние да разбере реда на кода. Това може да стане с помощта на код On Error Resume Next, заедно с MsgBox Err.Number . Помислете за същите данни, използвани в горните примери. Отново ще видим същите 3 числа X, Y и Z, както е показано по-долу.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число край подс 

И за отпечатване на изходния резултат разрешете полетата за съобщения за всички Integers като изход.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

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

Сега, за да премахнем тази грешка, ще използваме On Error Resume Next.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число при грешка Възобновете Следващ X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

И пуснете кода. Това ще даде резултат на валиден математически ред, както е показано по-долу.

Сега допълнително добавете кодов ред на ZResult преди математическото изражение на Z целочислено разделение и добавете кодов ред на MsgBox Err.Number в края на кода, както е показано по-долу.

 Sub OnError () Dim X като цяло число, Y като цяло число, Z като цяло число при грешка Възобновете Следващо X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Сега стартирайте кода, като използвате клавиша F5 или като натиснете бутона за възпроизвеждане, както е показано по-долу.

Както можем да видим на горните скрийншоти. Първото поле за съобщения има 0, което е пренаселено от неправилен математически израз. 2- ро и 3 -то имат резултат от деленето на Y и Z цели числа. И последното поле за съобщение има код за грешка във времето на изпълнение 11, което вероятно е кодът за грешка в изразите на разделянето на X цяло число.

Плюсове на VBA при грешка

  • Можем да изчислим всяка математическа формула, дори ако тя е неправилна.
  • За по-големи кодиращи структури, където има шанс или има грешка, използването на тези методи може да даде правилен резултат дори сред реда от кодове.
  • Това дава по-добър резултат в сравнение с резултата, получен от нормални изчисления на excel.

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

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

Можете да изтеглите този шаблон на VBA On Error Excel тук - VBA On Error Excel шаблон

Препоръчителни статии

Това е ръководство за грешка в Excel VBA при грешка. Тук обсъдихме как да използвате VBA On Error Statement заедно с някои практически примери и шаблон за Excel, който може да се сваля. Можете да разгледате и другите ни предложени статии -

  1. Как да използвате VBA TRIM функция?
  2. Формат на номера във VBA
  3. Ръководство за Excel VBA Do while Loop
  4. Как да използвате VBA Find Function?

Категория: