Ynhâldsopjefte
Yn Microsoft Excel VBA is flaterôfhanneling ien fan 'e krityske taken. As jo in kodearder binne, wite jo it belang fan flaterôfhanneling om in perfekte applikaasje te bouwen. Elke blunder yn in ferklearring kin jo VBA-koade op in protte manieren hinderje. Dat, jo moatte foarsichtich wêze om dizze flaters te behanneljen by it útfieren fan in VBA-koade. D'r binne in protte run-time flaters dy't jo kinne tsjinkomme by it brûken fan de VBA-koade yn Excel. Om ien fan har op te lossen, brûke wy de Op Flater Resume Folgjende statement.
Yn dit lesboek learje jo de On Error Resume Next statement yn Excel te brûken VBA. Dizze tutorial sil op punt wêze mei passende foarbylden en juste yllustraasjes. Dus, bliuw by ús.
Download Practice Workbook
VBA On Error Resume Next.xlsm
Flaterbehanneling yn Excel VBA
Wylst jo wurkje mei Microsoft Excel VBA, sille jo in protte flaters yn jo subproseduere tsjinkomme. Wannear't VBA gjin ferklearring kin útfiere, smyt it in run-time flater.
Excel behannelet dizze flaters automatysk, dus as in run-time flater ûntstiet, toant it in standert flaterberjocht lykas it folgjende:
No kinne jo dizze ferskillend omgean mei guon VBA-útspraken. Ik sil se yn lettere seksjes beprate.
Lês Mear: Hoe reparearje #REF! Flater yn Excel (6 oplossingen)
Op flaterstatements yn VBA
Om runtime flaters te behanneljen, ynstruearje wy Excel mei de On Error statement. It beslútfan NAME Flater yn Excel (10 foarbylden)
💬 Dingen om te ûnthâlden
✎ By flater Resume Folgjende reparearje de flaters net. It negearret yn prinsipe de flater en giet troch nei de folgjende ferklearring.
✎ Excel trapet en bewarret de run-time flaters yn Err-objekt. As wy de By Error Resume Next statement brûke, wisket it Err object eigenskippen.
✎ Jo kinne de On Error Resume Next útsette. stelling yn jo VBA-koade yn Excel troch it tafoegjen fan de On Error GoTo 0 statement.
Konklúzje
Ta beslút, ik hoopje dat dit tutorial jo in stik nuttich hat levere kennis om de Op Flater Resume Folgjende te brûken yn Excel VBA. Ik riede oan dat jo al dizze ynstruksjes leare en tapasse op jo dataset. Download it oefenwurkboek en besykje dizze sels. Fiel jo ek frij om feedback te jaan yn 'e kommentaardiel. Jo weardefolle feedback hâldt ús motivearre om tutorials lykas dit te meitsjen.
Ferjit net ús webside Exceldemy.com te kontrolearjen foar ferskate Excel-relatearre problemen en oplossingen.
Bliuw nije metoaden leare en bliuw groeie!
wat foar operaasjes wy dan daliks dwaan wolle. Yn prinsipe skeakelje wy dizze flaters út troch dit soarte fan flaterôfhanneling.Wy brûke trije soarten On Error statements(syntaksis) yn Excel VBA.
- Op flater GoTo line
- Op flater trochgean Folgjende
- Op flater GoTo 0
As jo in flater fine, brûk dan it kommando Op flater. Want as jo gjin Op flater -deklaraasje brûke, sille dy runtime-flaters desastreus wêze. It sil in flaterprompt sjen litte en de útfiering stopje.
As wy in On Error statement brûke, skeakelje wy in "ynskeakele" flaterhanneler oan. De "aktive" flater handler is in ynskeakele handler dy't begjint de flater ôfhanneling operaasje. As in flater ûntstiet wylst in flaterhanneler belutsen is, kin de flaterhanneler fan 'e hjoeddeistige metoade de flater net ferneare. Dêrnei komt de kontrôle werom nei de opropproseduere.
As it opropproses in ynskeakele flaterhanneler hat, wurdt it aktivearre om de flater te behearjen. As jo oprop systeem syn flater handler is navenant dwaande, kontrôle jout werom fia eardere oprop prosedueres oant it fynt in ynskeakele, mar ynaktyf error handler. As it gjin idle-ynskeakele flaterhanneler kin fine, betsjut dit dat de flater katastrophale is op it plak dêr't it foarkomt.
Elke kear as de flaterbehanneler autoriteit werom jout oan in opropproseduere, evoluearret dy proseduere de besteande proseduere. Utfiering opnij begjint yn 'eoanwêzich proseduere op it momint selektearre troch de Resume statement as in flaterhanneler flaters yn elke proseduere behannelet.
'On Error Resume Next' in VBA
No, de Op Flater Resume Folgjende -ferklearring fertelt VBA om alle rigels koade te negearjen dy't flaters hawwe, en fuortdaliks trochgean nei de folgjende rigel koade. Dêrnei sille de Excel VBA-koades de rigel of rigels oerslaan dy't flaters yn befetsje, en gean nei de folgjende folchoarder fan koade.
De Op Flater Resume Folgjende statement twingt ymplemintaasje nei ferfetsje mei it kommando direkt nei de rigel fan koades dy't de run-time flater feroarsake. Dizze ferklearring lit in útfiering oerslaan, sels as d'r in run-time flater is. As jo tinke dat in bepaalde rigel koade in flater kin produsearje, pleats dan de routine foar flaterhantlieding dêr ynstee fan it op in oare lokaasje binnen de proseduere te pleatsen. De By Flater Resume Folgjende statement wurdt idle as jo koade in oare proseduere ropt. Dus, as jo in oerienkommende flaterôfhanneling nedich hawwe yn dy routine, moatte jo in Op Flater Resume Folgjende kommando útfiere yn elk neamd patroan.
It is ridlik as de rigel koade dy't jo kin oerslaan is net nedich foar it bloeiende rinnen fan 'e makro. Mar tink derom, it kin skealik wêze as jo it ferkeard brûke, om't it ûnbedoelde resultaten kin leverje.
Unthâld:
The On Flater Resume Folgjende ferklearring docht netreparearje de runtime flaters. It negearret yn prinsipe de flaters wêr't jo VB-útfiering opnij sil fanút de ferklearring dy't de runtime-flater generearre hat.
Besjoch de folgjende koade:
4747
Wy hawwe besocht 5 te dielen. mei 0 en 1. Lit ús rinne de koade. It sil de folgjende útfier sjen litte:
It produseart in run-time flater. Wy kinne in getal net diele troch 0. As jo de koade debugge, sille jo it folgjende sjen:
As it VB-programma in flater fynt, stopet it de proseduere fuortendaliks. It fiert de folgjende rigel net út.
No, litte wy de Op Flater Resume Folgjende statement foar de flaterstatement ymplementearje:
3550
Nei it útfieren fan de koade sille jo sjoch it folgjende:
Sa't jo sjen kinne, negearret VBA de line dy't de flater produsearret en giet fuort nei de folgjende rigel fan koade. Op dizze manier kinne jo de By Flater Resume Folgjende statement brûke om de flater yn Excel VBA te behanneljen.
Foarbylden fan 'On Error Resume Next' yn VBA
In de folgjende seksjes sil ik jo twa foarbylden jaan fan 'e Op flater opnij folgjende -statement dat jo kinne ymplementearje yn jo Excel-wurkblêd mei VBA. Ik riede oan dat jo dit alles leare en tapasse op jo wurkboek. It sil grif tanimme jo Excel-kennis.
1. 'On Error Resume Next' Statement to Hide Worksheets
No, yn dit foarbyld, sil ik jo in VBA-koade sjen litte dy'tsil alle wurkblêden fan jo aktive wurkboek ferbergje.
Besjoch de folgjende skermprint:
Hjir hawwe wy fjouwer wurkblêden. Wy sille se allegear ferbergje mei de folgjende VBA-koade:
3764
As jo de folgjende koade útfiere, sille jo de folgjende runtime-flater sjen:
Excel lit dizze flater sjen omdat jo net alle blêden yn in wurkboek ferbergje kinne. Dat, jo moatte de flater negearje. Om dit te dwaan, moatte jo de ferklearring On Error Resume Next yn jo rigel fan koade ymplementearje.
5337
Nei it foltôgjen fan de útfiering fan de VBA-koade sille jo de folgjende útfier sjen:
Ut it lêst sille jo gjin flaters sjen nei útfiering. Dat, ús ferklearring On Error Resume Next wurke echt goed yn 'e VBA-koade.
Lês mear: Flaters yn Excel en har betsjutting (15 ferskillende flaters)
2. VLOOKUP Funksje mei 'On Error Resume Next' yn VBA
Yn dit foarbyld sil ik in foarbyld sjen litte fan de VLOOKUP-funksje yn VBA . No, dizze VBA-koade omfettet ek de On Error Resume Next statement.
Besjoch de folgjende skermprint:
Hjir , kinne jo sjen guon minsken nammen en harren leeftiden. Yn 'e neistlizzende tabel sille wy de VLOOKUP brûke om de namme en leeftyd fan de persoan te finen.
Typ de folgjende koade om dit te dwaan:
1687
No, útfiere de makro . Jo sille de folgjende flater sjen:
No, dit is in run-timefersin. Wêrom bart it? Sjoch nochris nei de dataset:
Sa't jo sjen kinne, binne d'r gjin gegevens foar "Aaron" en "Emma". Dêrom útfiert it allinich de VLOOKUP foar de earste yngong. Dêrnei stopet it de útfiering. No, as jo de flater negearje wolle en trochgean om de rest fan 'e ieuwen te finen, brûk dan de On Error Resume Next statement.
2268
Nei it útfieren fan de VBA-koade, sille jo de folgjende útfier:
Sa't jo sjen kinne, troch it tapassen fan it kommando On Flater Resume Folgjende , hawwe wy de flater negearre en fûnen de rest fan 'e persoanen' leeftiden. Us VBA-koade fûn gjin gegevens fan Aaron en Emma. Dêrom negearre it dy wearden en joech de rest fan de wearden werom yn it Excel-wurkblêd.
Lês mear: [Fêst] Excel fûn in probleem mei ien of mear formuleferwizings yn dit wurkblêd
Skeakelje 'Op flater opnij folgjende' út mei Excel VBA
No kinne jo yn in situaasje wêze wêr't jo flaters negearje wolle foar in bepaald segmint fan 'e VBA-koade. Unthâld, as jo de ferklearring On Error Resume Next yn in VBA-koade brûke, sil it dêrnei alle flaters oerslaan. No, as jo dat útsette wolle en de flaterôfhanneling ynskeakelje foar in oar segmint, brûk dan On Error GoTo 0 . It sil flaterôfhanneling wer ynskeakelje.
Algemien gebrûk:
Sub error_handling()
Om flaters te negearjen
Op flater Trochgean Folgjende
// rigels fan koades
Omynskeakelje Flater ôfhanneling
Op flater GoTo 0
// rigels fan koades
End sub
Besjoch de folgjende VBA-koade:
6707
Wy brûkten de koade earder foar de funksje VLOOKUP . Hjir in ekstra stikje koade tafoege om jo te demonstrearjen. Us koade sil de flaters negearje by it útfieren fan de VLOOKUP mar it sil de flaterôfhanneling aktivearje nei de On Error GoTo 0 statement.
Lês Mear: Excel VBA: Skeakelje de "Op flater opnij folgjende" út
VBA 'On Error GoTo'
Earder haw ik it besprutsen it behanneljen fan de flaters mei de On Error-metoade. Us hiele artikel gie alles oer Op Flater Resume Folgjende. No binne d'r ek twa soarten flaterôfhanneling dy't ik yn 'e folgjende seksjes sil beprate.
1. VBA On Error GoTo 0
De On Error Goto 0 statement is de ynboude ynstelling fan Excel as jo koades gjin flaterhanneler yn har hawwe. It ymplisearret yn prinsipe dat as VBA in flater fynt mei On Error GoTo 0 , sil it stopje mei it útfieren fan de koade en it tradisjonele flaterberjochtfak sjen litte.
On Error GoTo 0 statement skeakelet de flaterôfhanneling yn 'e hjoeddeiske proseduere yn prinsipe út. It definiearret rigel 0 net as it begjin fan 'e koade foar flaterbehanneling, sels as de metoade in rigel nûmere 0 omfettet.
Besjoch de folgjende koade:
7656
Wy hawwe al sjen litten jo dizze koade. Dizze koade ferberget yn prinsipe alle wurkblêdenyn jo hjoeddeistige wurkboek. No, ik haw yndie in ekstra stikje koade mei On Error GoTo 0 om de flater sjen te litten. As jo de koade útfiere, sille jo it folgjende sjen:
It lit dizze flater sjen, om't wy gjin blêden mei deselde namme yn it aktive wurkboek hawwe kinne.
2. VBA On Error GoTo line
No kinne jo Excel ek ynstruearje om in oar segmint fan koade út te fieren as it in flater fynt mei de On Error GoTo line . It fertelt Excel om wat út te fieren nei it finen fan in flater.
It line argumint is elke line tag of line number. As ús koade in run-time flater feroarsaket, sil it nei de line ferpleatse, wêrtroch't de flaterhanneler aktyf is yn 'e útfiering. Unthâld, jo definieare rigel moat yn 'e krekte proseduere wêze as de On Error statement; oars sil it in kompilaasjeflater feroarsaakje.
Besjoch de folgjende koade:
7848
Jo seagen de koade yn it foarige foarbyld. As wy On Error GoTo 0 brûkten, feroarsake it in flater. Mar, hjir hawwe wy dat ferfongen troch de On Error GoTo line statement.
No, fier de koade út en jo sille it folgjende sjen:
Sa't jo sjen kinne, lit it ús it dialoochfinster foar standert flaters net sjen. Ynstee toant it it oanpaste berjochtfak dat wy makke hawwe yn it segment error_handler . As Excel in flater fynt, springt it nei it segment error_handler en lit ús it berjochtfakje sjen.
Wy hawwe ek in Exit Sub brûkt yn 'e proseduere.As d'r gjin blêd is mei de namme " VLOOKUP ", sil ús VBA-koade it aktive blêd omneame. Dan moatte wy de útfiering hjir ôfmeitsje, om't wy net hoege troch te gean nei de flaterhanneler en it berjochtfakje werjaan.
VBA 'Op flater' wurket net yn Excel
Soms, nettsjinsteande hoe hurd jo besykje, de On Error-metoade sil net wurkje. Earder hawwe wy de metoade On Error ymplementearre om de flaters te behanneljen. Mar, soms sil it flaters sjen litte, sels as jo By Flater Resume Folgjende of On Error GoTo 0 brûke. D'r kinne ferskate redenen wêze yn jo koade dy't jo moatte reparearje. Ik sil jo dat net sjen litte.
De basisreden foar VBA ' Op flater' Net wurkje yn Excel is it ynskeakeljen fan de opsje "Brek op alle flaters" yn Excel.
Folgje dizze stappen om dat op te lossen:
📌 Stappen
- Druk earst op Alt+F11 op jo toetseboerd om iepenje de VBA-bewurker.
- Klik no op Tools > Opsjes.
- Dêrnei klikje jo op it ljepblêd Algemien yn it dialooch Opsjes box.
- Hjir kinne jo sjen, " Brek op alle flaters " is al kontrolearre. It foarkomt yn prinsipe dat jo de flaters behannelje.
- Om it te feroarjen, selektearje de opsje " Brek op ûnbehannele flaters " en klik op OK .
Ik hoopje dat it jo probleem sil reparearje fan VBA "Op flater" net wurket yn Excel.
Lês Mear: Reasons en korreksjes