Све ВБА грешке нису једнаке. Неки су озбиљни, а неки мање озбиљни. Иако можете занемарити грешке које сматрате небитним, морате се бавити другим, озбиљнијим грешкама. У неким случајевима морате да идентификујете конкретну грешку која се јавља.
Свака врста грешке има званичан број. Када дође до грешке, Екцел чува број грешке у објекту Еррор под називом Ерр. Својство Нумбер овог објекта садржи број грешке, а својство Десцриптион садржи опис грешке. На пример, следећа изјава приказује број грешке, двотачку и опис грешке:
МсгБок Ерр.Нумбер & ": " & Ерр.Десцриптион
Имајте на уму да Екцел поруке о грешци нису увек веома корисне — али то већ знате.
Следећи поступак показује како да утврдите до које грешке је дошло. У овом случају, можете безбедно да игноришете грешке изазване покушајем да добијете квадратни корен непозитивног броја (тј. грешка 5) или грешке изазване покушајем да добијете квадратни корен ненумеричке вредности (грешка 13).
С друге стране, потребно је да обавестите корисника да ли је радни лист заштићен и избор садржи једну или више закључаних ћелија. (У супротном, корисник може мислити да је макро функционисао када заиста није.) Покушај писања у закључану ћелију на заштићеном радном листу узрокује грешку 1004.
Суб СелецтионСкрт()
Дим целл Ас Ранге
Дим ЕррМсг као стринг
Ако ТипеНаме(Избор) <> "Ранге" онда изађите из Суб
У случају грешке ГоТо ЕррорХандлер
За сваку ћелију у избору
целл.Валуе = Скр(целл.Валуе)
Следећа ћелија
Екит Суб
ЕррорХандлер:
Изаберите Цасе Ерр.Нумбер
Случај 5 'Негативан број
Настави Следећи
Случај 13 'Неподударање типова
Настави Следећи
Случај 1004 'Закључана ћелија, заштићени лист
МсгБок "Ћелија је закључана. Покушајте поново.", вбЦритицал, целл.Аддресс
Екит Суб
Цасе Елсе
ЕррМсг = Грешка (Број грешке)
МсгБок "ГРЕШКА: " & ЕррМсг, вбЦритицал, целл.Аддресс
Екит Суб
Крај Изаберите
Енд Суб
Када дође до грешке у току извршавања, извршење скаче на код који почиње ознаком ЕррорХандлер. Структура Селецт Цасе тестира три уобичајена броја грешака. Ако је број грешке 5 или 13, извршење се наставља на следећој наредби. (Другим речима, грешка се игнорише.) Али ако је број грешке 1004, рутина обавештава корисника и затим се завршава. Последњи случај, свеобухватан за неочекиване грешке, хвата све остале грешке и приказује стварну поруку о грешци.