Op Fout Hervat Volgende: Hanteer fout in Excel VBA

  • Deel Dit
Hugh West

In Microsoft Excel VBA is fouthantering een van die kritieke take. As jy 'n kodeerder is, weet jy hoe belangrik fouthantering is om 'n perfekte toepassing te bou. Enige fout in 'n verklaring kan jou VBA-kode op baie maniere belemmer. U moet dus versigtig wees om daardie foute te hanteer terwyl u 'n VBA-kode uitvoer. Daar is baie looptydfoute wat u kan ondervind wanneer u die VBA-kode in Excel gebruik. Om een ​​van hulle op te los, gebruik ons ​​die On Error Resume Next -stelling.

In hierdie tutoriaal sal jy leer om die On Error Resume Next -stelling in Excel te gebruik VBA. Hierdie tutoriaal sal op die punt wees met geskikte voorbeelde en behoorlike illustrasies. So, bly by ons.

Laai Oefenwerkboek af

VBA On Error Resume Next.xlsm

Fouthantering in Excel VBA

Terwyl u met Microsoft Excel VBA werk, sal u baie foute in u subprosedure ondervind. Wanneer VBA nie 'n stelling kan uitvoer nie, gooi dit 'n looptydfout.

Excel hanteer outomaties hierdie foute, so wanneer 'n looptydfout opduik, vertoon dit 'n verstekfoutboodskap soos die volgende:

Nou kan jy dit op verskillende maniere hanteer met sommige VBA-stellings. Ek sal hulle in latere afdelings bespreek.

Lees Meer: Hoe om #REF reg te stel! Fout in Excel (6 oplossings)

Op Foutstellings in VBA

Om looptydfoute te hanteer, gee ons Excel opdrag met die On Error-stelling. Dit besluitvan NAAM Fout in Excel (10 voorbeelde)

💬 Dinge om te onthou

✎ Met fout Hervat Volgende maak nie die foute reg nie. Dit ignoreer basies die fout en gaan voort na die volgende stelling.

Excel vang en stoor die looptydfoute in Err-objek. Wanneer ons die On Error Resume Next -stelling gebruik, vee dit Err-objek-eienskappe uit.

Jy kan die On Error Resume Next afskakel stelling in jou VBA-kode in Excel deur die On Error GoTo 0 -stelling by te voeg.

Gevolgtrekking

Om af te sluit, ek hoop dat hierdie tutoriaal vir jou 'n stukkie nuttige verskaf het kennis om die On Error Resume Next in Excel VBA te gebruik. Ek beveel aan dat jy al hierdie instruksies op jou datastel leer en toepas. Laai die oefenwerkboek af en probeer dit self. Gee ook gerus terugvoer in die kommentaarafdeling. Jou waardevolle terugvoer hou ons gemotiveerd om tutoriale soos hierdie te skep.

Moenie vergeet om ons webwerf Exceldemy.com na te gaan vir verskeie Excel-verwante probleme en oplossings nie.

Hou aan om nuwe metodes te leer en hou aan groei!

watter soort operasies ons volgende onmiddellik wil doen. Basies deaktiveer ons hierdie foute deur hierdie soort fouthantering.

Ons gebruik drie soorte On Error-stellings (sintaksis) in Excel VBA.

  • By Fout Gaan na reël
  • By Fout Hervat Volgende
  • Op Fout Gaan na 0

Wanneer jy 'n fout vind, gebruik die On Error-opdrag. Want as jy nie 'n On Error -verklaring gebruik nie, sal daardie looptydfoute rampspoedig wees. Dit sal 'n foutprompt wys en die uitvoering stop.

Wanneer ons 'n On Error -stelling gebruik, skakel ons 'n "geaktiveerde" fouthanteerder aan. Die "aktiewe" fouthanteerder is 'n geaktiveerde hanteerder wat die fouthanteringsoperasie begin. As 'n fout ontstaan ​​terwyl 'n fouthanteerder betrokke is, kan die huidige metode se fouthanteerder nie die fout verduur nie. Daarna keer die beheer terug na die oproepprosedure.

As die oproepproses 'n geaktiveerde fouthanteerder het, word dit geaktiveer om die fout te bestuur. As jou oproepstelsel se fouthanteerder dienooreenkomstig geskakel is, gee beheer terug via vroeëre oproepprosedures totdat dit 'n geaktiveerde maar onaktiewe fouthanteerder vind. As dit nie enige ledige geaktiveerde fouthanteerder kan vind nie, beteken dit dat die fout katastrofies is op die punt wat dit voorkom.

Elke keer as die fouthanteerder magtiging teruggee aan 'n oproepprosedure, ontwikkel daardie prosedure die bestaande prosedure. Uitvoering herbegin in diehuidige prosedure op die oomblik gekies deur die Hervat -stelling wanneer 'n fouthanteerder foute in enige prosedure hanteer.

'Op fouthervat volgende' in VBA

Nou, die On Error Resume Next -stelling sê vir VBA om enige kodereëls met foute te ignoreer, en gaan dadelik voort na die volgende reël kode. Daarna sal die Excel VBA-kodes die reël of reëls wat foute daarin bevat oorslaan, en aanbeweeg na die volgende volgorde van kode.

Die On Error Resume Next -stelling dwing implementering om hervat met die opdrag en volg onmiddellik die reël kodes wat die looptydfout veroorsaak het. Hierdie stelling laat 'n uitvoering toe om oor te slaan, selfs al is daar 'n looptydfout. As jy dink 'n spesifieke reël kode kan 'n fout veroorsaak, plaas die fouthanteringsroetine daar eerder as om dit op 'n ander plek binne die prosedure te plaas. Die Op Fout Hervat Volgende -stelling word ledig wanneer jou kode 'n ander prosedure oproep. Dus, wanneer jy 'n ooreenstemmende fouthantering in daardie roetine benodig, moet jy 'n On Error Resume Next -opdrag in elke benoemde patroon uitvoer.

Dit is redelik wanneer die reël kode wat jy kan oorslaan, is nie nodig vir die florerende werking van die makro nie. Maar onthou, dit kan nadelig wees as jy dit verkeerd gebruik, aangesien dit onbedoelde resultate kan lewer.

Onthou:

The On Fout Hervat Volgende stelling nieherstel die looptydfoute. Dit ignoreer basies die foute waar jou VB-uitvoering sal hervat vanaf die stelling wat die looptydfout gegenereer het.

Kyk na die volgende kode:

4730

Ons het probeer om 5 te verdeel. met 0 en 1. Kom ons hardloop die kode. Dit sal die volgende uitvoer wys:

Dit produseer 'n looptydfout. Ons kan nie 'n getal deur 0 deel nie. Wanneer jy die kode ontfout, sal jy die volgende sien:

Wanneer die VB-program 'n fout vind, stop dit die prosedure dadelik. Dit voer nie die volgende reël uit nie.

Kom ons implementeer nou die On Error Resume Next -stelling voor die foutstelling:

5081

Nadat jy die kode uitgevoer het, sal jy sien die volgende:

Soos jy kan sien, ignoreer VBA die reël wat die fout produseer en gaan dadelik voort na die volgende reël kode. Op hierdie manier kan jy die By Fout Hervat Volgende stelling gebruik om die fout in Excel VBA te hanteer.

Voorbeelde van 'Op Fout Hervat Volgende' in VBA

In die volgende afdelings, gaan ek jou twee voorbeelde gee van die On Error Resume Next -stelling wat jy met VBA in jou Excel-werkblad kan implementeer. Ek beveel aan dat jy dit alles leer en toepas op jou werkboek. Dit sal beslis jou Excel-kennis verhoog.

1. 'On Error Resume Next' Statement to Hide Worksheets

Nou, in hierdie voorbeeld, sal ek vir jou 'n VBA-kode wys watsal al die werkkaarte van jou aktiewe werkboek versteek.

Kyk na die volgende skermskoot:

Hier het ons vier werkkaarte. Ons sal hulle almal wegsteek deur die volgende VBA-kode te gebruik:

3338

Wanneer jy die volgende kode uitvoer, sal jy die volgende looptydfout sien:

Excel wys hierdie fout omdat jy nie al die velle in 'n werkboek kan versteek nie. So, jy moet die fout ignoreer. Om dit te doen, moet jy die On Error Resume Next-stelling in jou reël kode implementeer.

4893

Nadat jy die uitvoering van die VBA-kode voltooi het, sal jy die volgende uitvoer sien:

Uiteindelik sal u geen foute sien na uitvoering nie. So, ons On Error Resume Next-stelling het baie goed gewerk in die VBA-kode.

Lees meer: Foute in Excel en hul betekenis (15 verskillende foute)

2. VLOOKUP-funksie met 'On Error Resume Next' in VBA

In hierdie voorbeeld sal ek 'n voorbeeld van die VLOOKUP-funksie in VBA wys. Nou, hierdie VBA-kode sluit ook die On Error Resume Next -stelling in.

Kyk na die volgende skermkiekie:

Hier , kan jy sommige mense se name en hul ouderdomme sien. In die aangrensende tabel sal ons die VLOOKUP gebruik om die persoon se naam en ouderdom te vind.

Tik die volgende kode om dit te doen:

9800

Laat nou die makro . Jy sal die volgende fout sien:

Nou, dit is 'n looptydfout. Hoekom gebeur dit? Kyk weer na die datastel:

Soos jy kan sien, is daar geen data vir “Aaron” en “Emma” nie. Dit is hoekom dit slegs die VLOOKUP vir die eerste inskrywing uitvoer. Daarna stop dit die uitvoering. Nou, as jy die fout wil ignoreer en voortgaan om die res van die ouderdomme te vind, gebruik die On Error Resume Next -stelling.

6594

Nadat jy die VBA-kode uitgevoer het, sal jy die volgende uitset:

Soos jy kan sien, deur die On Error Resume Next opdrag toe te pas, het ons die fout geïgnoreer en die res van die persone se eeue. Ons VBA-kode het geen data van Aaron en Emma gevind nie. Dit is hoekom dit daardie waardes geïgnoreer het en die res van die waardes in die Excel-werkblad teruggestuur het.

Lees meer: ​​[Vastgestel] Excel het 'n probleem met een of meer formuleverwysings in hierdie werkblad gevind

Skakel 'On Error Resume Next' af met Excel VBA

Nou is jy dalk in 'n situasie waar jy foute vir 'n spesifieke segment van die VBA-kode wil ignoreer. Onthou, as jy die On Error Resume Next-stelling in 'n VBA-kode gebruik, sal dit al die foute daarna oorslaan. Nou, as jy dit wil afskakel en die fouthantering vir 'n ander segment aktiveer, gebruik On Error GoTo 0 . Dit sal fouthantering weer aktiveer.

Generiese gebruik:

Sub error_handling()

Om foute te ignoreer

By Fout Hervat Volgende

// reëls kodes

Aanskakel Fouthantering aan

Op Fout Gaan na 0

//reëls kodes

Eind sub

Kyk na die volgende VBA-kode:

9620

Ons het die kode voorheen gebruik vir die VLOOKUP funksie. Hier is 'n ekstra stukkie kode bygevoeg om jou te demonstreer. Ons kode sal die foute ignoreer terwyl die VLOOKUP uitgevoer word, maar dit sal die fouthantering aktiveer ná die On Error GoTo 0 -stelling.

Lees meer: Excel VBA: Skakel die "On Error Resume Next" af

VBA 'On Error GoTo'

Voorheen het ek bespreek hantering van die foute deur die On Error-metode te gebruik. Ons hele artikel het gegaan oor On Error Resume Next. Nou is daar ook twee tipes fouthantering wat ek in die volgende afdelings sal bespreek.

1. VBA On Error GoTo 0

The On Error Goto 0 -stelling is Excel se ingeboude instelling as jou kodes nie 'n fouthanteerder in het nie. Dit impliseer basies dat wanneer VBA 'n fout vind met On Error GoTo 0 , dit sal ophou om die kode te laat loop en sy tradisionele foutboodskapkassie sal wys.

On Error GoTo 0 stelling skakel basies die fouthantering in die huidige prosedure af. Dit definieer nie reël 0 as die begin van die fouthanteringskode nie, selfs al bevat die metode 'n reël wat 0 genommer is.

Kyk na die volgende kode:

4685

Ons het reeds hierdie kode vir jou gewys. Hierdie kode versteek basies al die werkblaaiein jou huidige werkboek. Nou, ek het inderdaad 'n ekstra stukkie kode met On Error GoTo 0 om die fout te wys. As jy die kode hardloop, sal jy die volgende sien:

Dit wys hierdie fout omdat ons nie blaaie met dieselfde naam in die aktiewe werkboek kan hê nie.

2. VBA On Error GoTo reël

Nou kan jy Excel ook opdrag gee om 'n ander segment kode uit te voer as dit enige fout vind deur die On Error GoTo reël te gebruik. Dit sê vir Excel om iets uit te voer nadat 'n fout gevind is.

Die lynargument is enige lynmerker of reëlnommer. As ons kode enige looptydfout veroorsaak, sal dit na die lyn beweeg, wat veroorsaak dat die fouthanteerder aktief is in die uitvoering. Onthou, jou gedefinieerde lyn moet in die presiese prosedure wees as die On Error-stelling; anders sal dit 'n samestellingsfout veroorsaak.

Kyk na die volgende kode:

5810

Jy het die kode in die vorige voorbeeld gesien. Toe ons On Error GoTo 0 gebruik het, het dit 'n fout veroorsaak. Maar hier het ons dit vervang met die On Error GoTo reël -stelling.

Laat nou die kode uit en jy sal die volgende sien:

Soos jy kan sien, wys dit ons nie die standaardfoutdialoogkassie nie. In plaas daarvan wys dit die pasgemaakte boodskapkas wat ons in die error_handler -segment geskep het. Wanneer Excel enige fout vind, spring dit na die error_handler -segment en wys vir ons die boodskapkassie.

Ons het ook 'n Exit Sub in die prosedure gebruik.As daar geen blad met die naam “ VLOOKUP “ is nie, sal ons VBA-kode die aktiewe blad hernoem. Dan moet ons die uitvoering hier voltooi, want ons hoef nie na die fouthanteerder te gaan en die boodskapkassie te vertoon nie.

VBA 'On Error' Werk nie in Excel nie

Soms, maak nie saak hoe hard jy probeer nie, die On Error-metode sal nie werk nie. Voorheen het ons die On Error -metode geïmplementeer om die foute te hanteer. Maar soms sal dit foute wys, selfs al gebruik jy Op Fout Hervat Volgende of Op Fout Gaan na 0 . Daar kan verskeie redes in jou kode wees wat jy moet regmaak. Ek gaan dit nie vir jou wys nie.

Die basiese rede waarom VBA ' On Error' Nie werk in Excel nie, is om die "Break on All Errors"-opsie in Excel aan te skakel.

Volg hierdie stappe om dit op te los:

📌 Stappe

  • Druk eers Alt+F11 op jou sleutelbord om maak die VBA-redigeerder oop.
  • Klik nou op Tools > Opsies.

  • Daarna, klik op die Algemene oortjie in die Opsies dialoog box.

  • Hier kan jy sien, " Break on All Errors " is reeds gemerk. Dit verhoed jou basies om die foute te hanteer.
  • Om dit te verander, kies die opsie “ Break on Unhanted Errors ” en klik op OK .

Ek hoop dit sal jou probleem oplos van VBA "On Error" wat nie in Excel werk nie.

Lees Meer: Redes en Regstellings

Hugh West is 'n hoogs ervare Excel-afrigter en ontleder met meer as 10 jaar ondervinding in die bedryf. Hy het 'n Baccalaureusgraad in Rekeningkunde en Finansies en 'n Meestersgraad in Besigheidsadministrasie. Hugh het 'n passie vir onderrig en het 'n unieke onderrigbenadering ontwikkel wat maklik is om te volg en te verstaan. Sy kundige kennis van Excel het duisende studente en professionele persone wêreldwyd gehelp om hul vaardighede te verbeter en uit te blink in hul loopbane. Deur sy blog deel Hugh sy kennis met die wêreld, en bied gratis Excel-tutoriale en aanlyn opleiding aan om individue en besighede te help om hul volle potensiaal te bereik.