Како можете идентификовати и третирати сваку могућу грешку у програму Екцел 2016? Често не можете. На срећу, ВБА пружа још један начин за решавање ових досадних грешака.
Поновно разматрање процедуре ЕнтерСкуареРоот
Испитајте следећи код. Рутина користи вишенаменску наредбу Он Еррор да ухвати све грешке и затим проверава да ли је ИнпутБок отказан.
Суб ЕнтерСкуареРоот5()
Дим Нум као варијанта
Пригуши поруку као стринг
' Подесите руковање грешкама
У случају грешке ГоТо БадЕнтри
' Затражите вредност
Нум = ИнпутБок („Унесите вредност“)
' Изађи ако је отказано
Ако је Нум = „“ Затим изађите из под
' Уметните квадратни корен
АцтивеЦелл.Валуе = Скр(Бр)
Екит Суб
БадЕнтри:
Порука = „Дошло је до грешке.“ & вбНевЛине & вбНевЛине
Порука = Порука & „Уверите се да је опсег изабран,“
Порука = Порука & „лист није заштићен“,
Порука = Порука & „и унесете ненегативну вредност.“
МсгБок Мсг, вбЦритицал
Енд Суб
Ова рутина заробљава било коју врсту грешке током извршавања. Након хватања грешке у току извршавања, ревидирана ЕнтерСкуареРоот процедура приказује овај оквир за поруку. Овај оквир за поруку описује највероватније узроке грешке.
Грешка у току извођења у процедури генерише ову полукорисну поруку о грешци.
Он Еррор не ради?
Ако изјава о грешци не функционише како је рекламирано, потребно је да промените једно од својих подешавања:
Активирајте ВБЕ.
Изаберите команду Алатке → Опције.
Кликните на картицу Опште у оквиру за дијалог Опције.
Уверите се да је поставка Бреак он Алл Еррорс поништена.
Ако је ова поставка изабрана, Екцел у суштини игнорише све изјаве о грешци. Обично желите да задржите опције хватања грешака постављене на Прекини на необрађене грешке.
О изјави о грешци
Коришћење изјаве Он Еррор у вашем ВБА коду омогућава вам да заобиђете уграђено управљање грешкама у Екцел-у и користите сопствени код за руковање грешкама. У претходном примеру, грешка током извршавања узрокује да извршење макроа скочи на наредбу са ознаком БадЕнтри. Као резултат тога, избегавате Екцелове непријатељске поруке о грешци и можете да прикажете сопствену поруку кориснику.
Приметите да пример користи Екит Суб наредбу непосредно пре ознаке БадЕнтри. Ова изјава је неопходно зато што не желе да се изврши код грешке за руковање ако грешка не не догоди.