На грешка Продолжи Следно: Ракување со грешка во Excel VBA

  • Споделете Го Ова
Hugh West

Во Microsoft Excel VBA, справувањето со грешки е една од критичните задачи. Ако сте кодер, ја знаете важноста на справувањето со грешки за да изградите совршена апликација. Секоја грешка во изјавата може да го попречи вашиот VBA код на многу начини. Значи, мора да бидете претпазливи да се справите со тие грешки додека извршувате VBA код. Има многу грешки при извршувањето со кои може да се соочите додека го користите VBA кодот во Excel. За да решиме еден од нив, ја користиме изјавата On Error Resume Next .

Во ова упатство, ќе научите да ја користите изјавата On Error Resume Next во Excel VBA. Овој туторијал ќе биде на место со соодветни примери и соодветни илустрации. Затоа, останете со нас.

Преземете ја работната книга за вежбање

VBA On Error Resume Next.xlsm

Ракување со грешки во Excel VBA

Додека работите со Microsoft Excel VBA, ќе се соочите со многу грешки во вашата подпроцедура. Кога VBA не може да изврши изјава, исфрла грешка во времето на извршување.

Excel автоматски се справува со овие грешки, така што кога ќе се појави грешка во времето на извршување, прикажува стандардна порака за грешка како следнава:

Сега, можете да се справите со овие различно со некои VBA изјави. Ќе разговарам за нив во подоцнежните делови.

Прочитајте повеќе: Како да го поправите #REF! Грешка во Excel (6 решенија)

За изјави за грешки во VBA

За да се справиме со грешките во времето на извршување, му даваме инструкции на Excel со изјавата On Error. Тоа одлучувана NAME Грешка во Excel (10 примери)

💬 Работи што треба да се запаметат

✎ На грешка Продолжи Следно не ги поправа грешките. Во основа ја игнорира грешката и продолжува кон следната изјава.

Excel ги заробува и складира грешките во времето на извршување во објектот Err. Кога ја користиме изјавата On Error Resume Next , таа ги брише својствата на објектот Err.

Можете да го исклучите On Error Resume Next изјава во вашиот VBA код во Excel со додавање на изјавата On Error GoTo 0 .

Заклучок

За да заклучиме, се надевам дека ова упатство ви обезбеди дел од корисни знаење за користење на On Error Resume Next во Excel VBA. Ви препорачувам да ги научите и да ги примените сите овие упатства во вашата база на податоци. Преземете ја работната книга за вежбање и пробајте ги сами. Исто така, слободно дајте повратни информации во делот за коментари. Вашите вредни повратни информации не одржуваат мотивирани да создаваме вакви упатства.

Не заборавајте да ја проверите нашата веб-локација Exceldemy.com за различни проблеми и решенија поврзани со Excel.

Продолжете да учите нови методи и да растете!

какви операции сакаме да направиме следната веднаш. Во основа, ние ги оневозможуваме овие грешки со ваков вид на справување со грешки.

Ние користиме три вида на изјави за грешка (синтакса) во Excel VBA.

  • По грешка Оди на линија
  • По грешка Продолжи следно
  • По грешка Оди на 0

Кога ќе најдете грешка, користете ја командата On Error. Затоа што ако не користите декларација On Error , тие грешки при извршување ќе бидат катастрофални. Ќе прикаже известување за грешка и ќе го запре извршувањето.

Кога користиме изјава On Error , вклучуваме управувач за грешки „овозможено“. „Активниот“ управувач со грешки е овозможен управувач што ја започнува операцијата за справување со грешки. Ако се појави грешка додека е вклучен управувач со грешки, управувачот со грешки на тековниот метод не може да ја издржи грешката. После тоа, контролата се враќа во процедурата за повикување.

Ако процесот на повикување има овозможен управувач за грешки, се активира за управување со грешката. Ако управувачот со грешки на вашиот систем за повикување е соодветно вклучен, контролата враќа преку претходни процедури за повикување додека не најде овозможен, но неактивен управувач за грешки. Ако не може да најде никаков управувач со грешки што е овозможен во мирување, тоа значи дека грешката е катастрофална во моментот на појавување.

Секој пат кога управувачот со грешки враќа овластувања на процедурата за повикување, таа постапка ја развива постоечката процедура. Извршувањето се рестартира воприсутна процедура во моментот избран од изјавата Resume кога управувачот со грешки се справува со грешки во која било постапка.

'On Error Resume Next' во VBA

Сега, On Error Resume Next изјавата му кажува на VBA да ги игнорира сите линии на код што имаат грешки и веднаш да продолжи до следната линија код. После тоа, кодовите на Excel VBA ќе ја прескокнат линијата или линиите што содржат грешки во нив и ќе преминат на следната низа кодови.

Изјавата On Error Resume Next ја принудува имплементацијата на продолжи со командата веднаш следејќи ја линијата на кодови што ја предизвикаа грешката во времето на извршување. Оваа изјава дозволува извршувањето да прескокне дури и ако има грешка при извршување. Ако мислите дека одредена линија на код може да предизвика грешка, ставете ја рутината за справување со грешки таму наместо да ја ставите на друга локација во рамките на постапката. Изјавата On Error Resume Next станува неактивен кога вашиот код повикува друга процедура. Значи, кога ви треба усогласена грешка во справувањето со таа рутина, мора да извршите команда On Error Resume Next во секоја именувана шема.

Разумно е кога линијата на кодот може да го прескокнете не е неопходно за процутот водење на макрото. Но запомнете, може да биде штетно ако го користите неправилно бидејќи може да даде несакани резултати.

Запомнете:

Вклучено Грешка Продолжи Следната изјава немапоправете ги грешките во времето на траење. Во основа ги игнорира грешките каде што вашето VB извршување ќе продолжи од изјавата што ја генерирала грешката за време на траење.

Погледнете го следниов код:

4125

Се обидовме да поделиме 5 со 0 и 1. Да го извршиме кодот. Ќе го прикаже следниов излез:

Произведува грешка при извршување. Не можеме да делиме број со 0. Кога ќе го дебагирате кодот, ќе го видите следново:

Кога програмата VB ќе најде грешка, веднаш ја запира постапката. Не ја извршува следната линија.

Сега, ајде да ја имплементираме изјавата On Error Resume Next пред изјавата за грешка:

7053

Откако ќе го извршите кодот, ќе видете го следново:

Како што можете да видите, VBA ја игнорира линијата што ја произведува грешката и веднаш продолжува до следната линија на код. На овој начин, можете да ја користите изјавата On Error Resume Next за да се справите со грешката во Excel VBA.

Примери за „On Error Resume Next“ во VBA

In Во следните делови, ќе ви дадам два примери на изјавата On Error Resume Next што можете да ја имплементирате во вашиот работен лист во Excel користејќи VBA. Ви препорачувам да научите и да ги примените сите овие во вашата работна книга. Дефинитивно ќе го зголеми вашето знаење за Excel.

1. Изјава „On Error Resume Next“ за да се сокријат работните листови

Сега, во овој пример, ќе ви покажам VBA код којќе ги скрие сите работни листови од вашата активна работна книга.

Погледнете ја следната слика од екранот:

Овде имаме четири работни листови. Ќе ги скриеме сите користејќи го следниов VBA код:

9039

Кога ќе го извршите следниов код, ќе ја видите следнава грешка при извршување:

Excel ја покажува оваа грешка бидејќи не можете да ги скриете сите листови во работната книга. Значи, треба да ја игнорирате грешката. За да го направите ова, треба да ја имплементирате изјавата On Error Resume Next во вашата линија код.

6340

По завршувањето на извршувањето на VBA кодот, ќе го видите следниот излез:

На крајот, нема да видите никакви грешки по извршувањето. Значи, нашата изјава On Error Resume Next функционираше навистина добро во кодот VBA.

Прочитајте повеќе: Грешки во Excel и нивното значење (15 различни грешки)

2. Функција VLOOKUP со 'On Error Resume Next' во VBA

Во овој пример, ќе прикажам пример за функцијата VLOOKUP во VBA . Сега, овој VBA код ја вклучува и изјавата On Error Resume Next .

Погледнете ја следната слика од екранот:

Тука , можете да ги видите имињата на некои луѓе и нивната возраст. Во соседната табела, ќе го користиме VLOOKUP за да го пронајдеме името и возраста на лицето.

Внесете го следниов код за да го направите ова:

2265

Сега, извршете го макрото . Ќе ја видите следнава грешка:

Сега, ова е време на извршувањегрешка. Зошто тоа се случува? Повторно погледнете ја базата на податоци:

Како што можете да видите, нема податоци за „Арон“ и „Ема“. Затоа го извршува само VLOOKUP за првиот запис. После тоа, го запира извршувањето. Сега, ако сакате да ја игнорирате грешката и да продолжите да ги наоѓате останатите возрасти, користете ја изјавата On Error Resume Next .

7579

По извршувањето на VBA кодот, ќе го видите следниот излез:

Како што можете да видите, со примена на командата On Error Resume Next , ја игнориравме грешката и ги најдовме останатите лица. возрасти. Нашиот VBA код не најде никакви податоци за Арон и Ема. Затоа ги игнорираше тие вредности и ги врати останатите вредности во работниот лист на Excel.

Прочитај повеќе: [Поправен] Excel најде проблем со една или повеќе референци на формулата во овој работен лист

Исклучете го „On Error Resume Next“ со Excel VBA

Сега, можеби ќе се најдете во ситуација кога сакате да ги игнорирате грешките за одреден сегмент од кодот VBA. Запомнете, ако ја користите изјавата On Error Resume Next во VBA код, ќе ги прескокне сите грешки после тоа. Сега, ако сакате да го исклучите тоа и да овозможите справување со грешки за друг сегмент, користете On Error GoTo 0 . Повторно ќе овозможи справување со грешки.

Генеричко користење:

Sub error_handling()

За игнорирање на грешки

По грешка Продолжи следно

// линии кодови

Довклучете Управување со грешки

На грешка GoTo 0

//линии кодови

Крајна под

Погледнете го следен VBA код:

5531

Кодот претходно го користевме за функцијата VLOOKUP . Овде додаде дополнителен дел од кодот за да ви покаже. Нашиот код ќе ги игнорира грешките при извршувањето на VLOOKUP но ќе го активира справувањето со грешки по изјавата On Error GoTo 0 .

Прочитајте повеќе: Excel VBA: Исклучете го „On Error Resume Next“

VBA „On Error GoTo“

Претходно разговарав справување со грешките користејќи го методот On Error. Целата наша статија беше за На грешка Продолжи Следно. Сега, постојат и два типа на справување со грешки за кои ќе разговарам во следните делови.

1. VBA On Error GoTo 0

The On Error Goto 0 изјавата е вградена поставка на Excel ако вашите кодови немаат управувач со грешки во нив. Тоа во основа имплицира дека кога VBA ќе најде грешка со On Error GoTo 0 , ќе го прекине извршувањето на кодот и ќе го покаже своето традиционално поле за порака за грешка.

On Error GoTo 0 изјавата во основа го исклучува справувањето со грешките во оваа постапка. Не ја дефинира линијата 0 како почеток на кодот за справување со грешки, дури и ако методот вклучува линија нумерирана со 0.

Погледнете го следниов код:

2967

Имаме веќе ви го покажа овој код. Овој код во основа ги крие сите работни листовиво вашата тековна работна книга. Сега, навистина имам дополнително парче код со On Error GoTo 0 за да се прикаже грешката. Ако го извршите кодот, ќе го видите следново:

Ја прикажува оваа грешка бидејќи не можеме да имаме листови со исто име во активната работна книга.

2. VBA On Error GoTo линија

Сега, можете исто така да му наложите на Excel да изврши друг сегмент од кодот ако најде некоја грешка со користење на линијата On Error GoTo . Му кажува на Excel да изврши нешто откако ќе пронајде грешка.

Аргументот на линијата е која било ознака или број на линија. Ако нашиот код предизвика каква било грешка во времето на извршување, тој ќе се пресели во линијата, предизвикувајќи управувачот со грешки да биде активен во извршувањето. Запомнете, вашата дефинирана линија мора да биде во точната процедура како изјавата On Error; во спротивно, ќе предизвика грешка во компајлирањето.

Погледнете го следниот код:

6874

Кодот го видовте во претходниот пример. Кога користевме На грешка GoTo 0 , тоа предизвика грешка. Но, овде го заменивме со изјавата On Error GoTo линија .

Сега, извршете го кодот и ќе го видите следново:

Како што можете да видите, не ни го прикажува стандардниот дијалог прозорец за грешка. Наместо тоа, го прикажува приспособеното поле за пораки што го создадовме во сегментот error_handler . Кога Excel ќе најде некоја грешка, тој скока во сегментот error_handler и ни го прикажува полето за пораки.

Исто така, користевме Exit Sub во постапката.Ако нема лист со име „ VLOOKUP “, нашиот VBA код ќе го преименува активниот лист. Потоа, мора да го завршиме извршувањето овде бидејќи не треба да продолжиме со управувачот со грешки и да го прикажеме полето за пораки.

VBA „На грешка“ не работи во Excel

Понекогаш, колку и да се трудите, методот On Error нема да работи. Претходно, го имплементиравме методот On Error за справување со грешките. Но, понекогаш ќе покаже грешки дури и ако користите На грешка Продолжи Следно или На грешка GoTo 0 . Може да има неколку причини во вашиот код што треба да ги поправите. Нема да ви го покажам тоа.

Основната причина поради која VBA „ На грешка“ не работи во Excel е вклучувањето на опцијата „Прекини на сите грешки“ во Excel.

Следете ги овие чекори за да го решите тоа:

📌 Чекори

  • Прво, притиснете Alt+F11 на тастатурата за да отворете го уредникот VBA.
  • Сега, кликнете на Алатки > Опции.

  • Потоа, кликнете на јазичето Општо во дијалогот Опции поле.

  • Тука, можете да видите, „ Прекинување на сите грешки “ е веќе означено. Тоа во основа ве спречува да се справите со грешките.
  • За да го промените, изберете ја опцијата „ Пребијте ги неракуваните грешки “ и кликнете на OK .

Се надевам дека ќе го реши проблемот со VBA „На грешка“ што не работи во Excel.

Прочитајте повеќе: Причини и корекции

Хју Вест е високо искусен тренер и аналитичар на Excel со повеќе од 10 години искуство во индустријата. Има диплома за сметководство и финансии и магистер по бизнис администрација. Хју има страст за предавање и има развиено уникатен пристап на наставата кој е лесен за следење и разбирање. Неговото стручно познавање на Excel им помогна на илјадници студенти и професионалци ширум светот да ги подобрат своите вештини и да се истакнат во нивните кариери. Преку својот блог, Хју го споделува своето знаење со светот, нудејќи бесплатни упатства за Excel и онлајн обука за да им помогне на поединците и бизнисите да го достигнат својот целосен потенцијал.