On Error Resume Next: Trajtimi i gabimit në Excel VBA

  • Shperndaje Kete
Hugh West

Në Microsoft Excel VBA, trajtimi i gabimeve është një nga detyrat kritike. Nëse jeni kodues, e dini rëndësinë e trajtimit të gabimeve për të ndërtuar një aplikacion të përsosur. Çdo gabim në një deklaratë mund të pengojë kodin tuaj VBA në shumë mënyra. Pra, duhet të jeni të kujdesshëm për të trajtuar ato gabime gjatë ekzekutimit të një kodi VBA. Ka shumë gabime në kohën e ekzekutimit që mund të hasni gjatë përdorimit të kodit VBA në Excel. Për të zgjidhur njërën prej tyre, ne përdorim deklaratën On Error Resume Next .

Në këtë tutorial, do të mësoni të përdorni deklaratën On Error Resume Next në Excel VBA. Ky tutorial do të jetë në pikën me shembuj të përshtatshëm dhe ilustrime të duhura. Pra, qëndroni me ne.

Shkarkoni Librin e Punës Praktike

VBA On Error Resume Next.xlsm

Trajtimi i gabimeve në Excel VBA

Gjatë punës me Microsoft Excel VBA, do të përballeni me shumë gabime në nën-procedurën tuaj. Kur VBA nuk mund të ekzekutojë një deklaratë, ajo nxjerr një gabim në kohën e ekzekutimit.

Excel merret automatikisht me këto gabime, kështu që kur shfaqet një gabim në kohën e ekzekutimit, ai shfaq një mesazh gabimi të paracaktuar si më poshtë:

Tani, ju mund t'i trajtoni këto në mënyra të ndryshme me disa deklarata VBA. Unë do t'i diskutoj ato në seksionet e mëvonshme.

Lexo më shumë: Si të rregulloni #REF! Gabim në Excel (6 zgjidhje)

Mbi deklaratat e gabimit në VBA

Për të trajtuar gabimet e kohës së ekzekutimit, ne udhëzojmë Excel me deklaratën On Gabim. Ajo vendosi gabimit NAME në Excel (10 shembuj)

💬 Gjërat për t'u mbajtur mend

✎ Në gabim Rifillo Next nuk i rregullon gabimet. Në thelb e injoron gabimin dhe vazhdon në deklaratën tjetër.

Excel i ruan dhe ruan gabimet e kohës së ekzekutimit në objektin Err. Kur përdorim deklaratën On Error Resume Next , ai fshin vetitë e objektit Err.

Mund të çaktivizoni On Error Resume Next deklaratë në kodin tuaj VBA në Excel duke shtuar On Error GoTo 0 deklaratë.

Përfundim

Për të përfunduar, shpresoj se ky tutorial ju ka ofruar një pjesë të dobishme njohuri për të përdorur On Error Resume Next në Excel VBA. Unë ju rekomandoj të mësoni dhe zbatoni të gjitha këto udhëzime në grupin tuaj të të dhënave. Shkarkoni fletoren e punës praktike dhe provoni vetë. Gjithashtu, mos ngurroni të jepni komente në seksionin e komenteve. Komentet tuaja të vlefshme na mbajnë të motivuar për të krijuar mësime të tilla.

Mos harroni të kontrolloni faqen tonë të internetit Exceldemy.com për probleme dhe zgjidhje të ndryshme të lidhura me Excel.

Vazhdoni të mësoni metoda të reja dhe vazhdoni të rriteni!

çfarë lloj operacionesh duam të bëjmë menjëherë në vijim. Në thelb, ne i çaktivizojmë këto gabime nga këto lloje të trajtimit të gabimeve.

Ne përdorim tre lloje të deklaratave (sintaksë) On Error në Excel VBA.

  • Në gabim Shkoni në linja
  • Në gabim Rifilloni më tej
  • Në gabim Shkoni në 0

Kur gjeni një gabim, përdorni komandën On Gabim. Sepse nëse nuk përdorni një deklaratë Për gabim , ato gabime në kohën e ekzekutimit do të jenë katastrofike. Do të shfaqë një kërkesë gabimi dhe do të ndalojë ekzekutimin.

Kur përdorim një deklaratë Në Gabim , ne aktivizojmë një mbajtës gabimi "të aktivizuar". Trajtuesi "aktiv" i gabimeve është një mbajtës i aktivizuar që fillon operacionin e trajtimit të gabimeve. Nëse lind një gabim gjatë përfshirjes së një trajtuesi të gabimit, trajtuesi i gabimeve të metodës aktuale nuk mund ta durojë gabimin. Pas kësaj, kontrolli kthehet në procedurën e thirrjes.

Nëse procesi i thirrjes ka një mbajtës gabimi të aktivizuar, ai aktivizohet për të menaxhuar gabimin. Nëse trajtuesi i gabimeve të sistemit tuaj të telefonimit është i angazhuar në mënyrë përkatëse, kontrolli jep përsëri përmes procedurave të mëparshme të thirrjes derisa të gjejë një mbajtës gabimi të aktivizuar, por joaktiv. Nëse nuk mund të gjejë ndonjë mbajtës gabimi të aktivizuar në boshe, kjo do të thotë se gabimi është katastrofik në pikën e tij të shfaqjes.

Sa herë që trajtuesi i gabimit i kthen autoritetin një procedure thirrëse, ajo procedurë evoluon procedurën ekzistuese. Ekzekutimi rifillon nëprezente procedurën në momentin e përzgjedhur nga deklarata Rifillimi kur një trajtues gabimi trajton gabimet në çdo procedurë.

'Në gabimin, Resume Next' në VBA

Tani, On Error Resume Next Deklarata i thotë VBA-së të injorojë çdo rresht kodi që ka gabime dhe të vazhdojë menjëherë në rreshtin e mëposhtëm të kodit. Pas kësaj, kodet Excel VBA do të kapërcejnë rreshtin ose rreshtat që përmbajnë gabime në to dhe do të kalojnë në sekuencën e mëposhtme të kodit.

Deklarata Në Gabim Resume Next detyron zbatimin në rifilloni me komandën duke ndjekur menjëherë linjën e kodeve që shkaktuan gabimin e kohës së ekzekutimit. Kjo deklaratë lejon që një ekzekutim të kapërcehet edhe nëse ka një gabim në kohën e ekzekutimit. Nëse mendoni se një linjë e caktuar kodi mund të prodhojë një gabim, vendosni rutinën e trajtimit të gabimeve atje në vend që ta vendosni në një vend tjetër brenda procedurës. Deklarata On Error Resume Next bëhet e papunë kur kodi juaj thërret një procedurë tjetër. Pra, kur keni nevojë për trajtimin e një gabimi të përputhur në atë rutinë, duhet të ekzekutoni një komandë On Error Resume Next në çdo model të emërtuar.

Është e arsyeshme kur linja e kodit që ju mund të kaloni nuk është e nevojshme për të lulëzuar drejtimin e makro. Por mbani mend, mund të jetë i dëmshëm nëse e përdorni gabimisht, pasi mund të japë rezultate të padëshiruara.

Mbani mend:

On Gabim Resume Deklarata tjetër nuk e bënrregulloni gabimet e kohës së ekzekutimit. Në thelb injoron gabimet ku ekzekutimi juaj VB do të rifillojë nga deklarata që ka gjeneruar gabimin e ekzekutimit.

Hidhini një sy kodit të mëposhtëm:

8669

Ne u përpoqëm të ndajmë 5 me 0 dhe 1. Le të ekzekutojmë kodin. Do të shfaqë daljen e mëposhtme:

Prodhon një gabim në kohën e ekzekutimit. Ne nuk mund ta ndajmë një numër me 0. Kur korrigjoni kodin, do të shihni sa vijon:

Kur programi VB gjen një gabim, ai menjëherë e ndalon procedurën. Ai nuk ekzekuton rreshtin e mëposhtëm.

Tani, le të zbatojmë deklaratën On Error Resume Next para deklaratës së gabimit:

4175

Pas ekzekutimit të kodit, do shikoni sa vijon:

Siç mund ta shihni, VBA injoron linjën që prodhon gabimin dhe vazhdon menjëherë në rreshtin e mëposhtëm të kodit. Në këtë mënyrë, ju mund të përdorni deklaratën Në gabim, rifilloni më tej për të trajtuar gabimin në Excel VBA.

Shembuj të "Për gabimin, rifilloni më tej" në VBA

Në në seksionet e mëposhtme, unë do t'ju ofroj dy shembuj të deklaratës Në gabim, rifilloni më tej që mund ta zbatoni në fletën tuaj të punës në Excel duke përdorur VBA. Unë ju rekomandoj t'i mësoni dhe t'i zbatoni të gjitha këto në librin tuaj të punës. Padyshim që do të rrisë njohuritë tuaja në Excel.

1. Deklarata 'On Error Resume Next' për të fshehur fletët e punës

Tani, në këtë shembull, unë do t'ju tregoj një kod VBA qëdo të fshehë të gjitha fletët e punës të librit tuaj aktiv të punës.

Hidhini një sy pamjes së mëposhtme të ekranit:

Këtu kemi katër fletë pune. Ne do t'i fshehim të gjitha duke përdorur kodin e mëposhtëm VBA:

1358

Kur të ekzekutoni kodin e mëposhtëm, do të shihni gabimin e mëposhtëm të kohës së ekzekutimit:

Excel tregon këtë gabim sepse nuk mund t'i fshehësh të gjitha fletët në një libër pune. Pra, duhet të injoroni gabimin. Për ta bërë këtë, duhet të zbatoni deklaratën On Error Resume Next në rreshtin tuaj të kodit.

3276

Pas përfundimit të ekzekutimit të kodit VBA, do të shihni daljen e mëposhtme:

Në fund, nuk do të shihni asnjë gabim pas ekzekutimit. Pra, deklarata jonë On Error Resume Next funksionoi shumë mirë në kodin VBA.

Lexo më shumë: Gabimet në Excel dhe kuptimi i tyre (15 gabime të ndryshme)

2. Funksioni VLOOKUP me 'On Error Resume Next' në VBA

Në këtë shembull, unë do të tregoj një shembull të funksionit VLOOKUP në VBA . Tani, ky kod VBA përfshin gjithashtu deklaratën On Error Resume Next .

Hidhini një sy pamjes së mëposhtme të ekranit:

Këtu , mund të shihni emrat e disa njerëzve dhe moshat e tyre. Në tabelën ngjitur, ne do të përdorim VLOOKUP për të gjetur emrin dhe moshën e personit.

Shkruani kodin e mëposhtëm për ta bërë këtë:

7157

Tani, ekzekutoni makro . Do të shihni gabimin e mëposhtëm:

Tani, kjo është një kohë ekzekutimigabim. Pse ndodh? Hidhini një sy sërish grupit të të dhënave:

Siç mund ta shihni, nuk ka të dhëna për "Aaron" dhe "Emma". Kjo është arsyeja pse ai ekzekuton vetëm VLOOKUP për hyrjen e parë. Pas kësaj, ajo ndalon ekzekutimin. Tani, nëse doni të injoroni gabimin dhe të vazhdoni të gjeni pjesën tjetër të moshave, përdorni deklaratën On Error Resume Next .

1478

Pas ekzekutimit të kodit VBA, do të shihni daljen e mëposhtme:

Siç mund ta shihni, duke aplikuar komandën On Error Resume Next , ne e shpërfillëm gabimin dhe gjetëm pjesën tjetër të personave' moshat. Kodi ynë VBA nuk gjeti asnjë të dhënë të Aaron dhe Emma. Kjo është arsyeja pse ai i injoroi ato vlera dhe ktheu pjesën tjetër të vlerave në fletën e punës Excel.

Lexo më shumë: [Rigjuar] Excel gjeti një problem me një ose më shumë referenca të formulës në këtë fletë pune

Çaktivizoni 'On Error Resume Next' me Excel VBA

Tani, mund të jeni në një situatë ku dëshironi të injoroni gabimet për një segment të veçantë të kodit VBA. Mbani mend, nëse përdorni deklaratën On Error Resume Next në një kod VBA, ai do t'i kapërcejë të gjitha gabimet pas kësaj. Tani, nëse doni ta çaktivizoni atë dhe të aktivizoni trajtimin e gabimeve për një segment tjetër, përdorni Në gabim GoTo 0 . Do të aktivizojë përsëri trajtimin e gabimeve.

Përdorimi i përgjithshëm:

Sub error_handling()

Për të shpërfillur gabimet

Në gabim Rifillo Tjetër

// rreshta kodesh

Përaktivizoni trajtimin e gabimeve

Për gabimin Shkoni në 0

//linjat e kodeve

Fundi nën

Hidhini një sy kodin e mëposhtëm VBA:

4421

Kemi përdorur kodin më parë për funksionin VLOOKUP . Këtu u shtua një pjesë shtesë e kodit për t'ju demonstruar. Kodi ynë do të injorojë gabimet gjatë kryerjes së VLOOKUP por do të aktivizojë trajtimin e gabimit pas deklaratës Në gabim GoTo 0 .

<. 0> Lexo më shumë: Excel VBA: Çaktivizo "On Error Resume Next"

VBA 'On Error GoTo'

Diskutova më parë trajtimi i gabimeve duke përdorur metodën On Error. I gjithë artikulli ynë kishte të bënte me On Error Resume Next. Tani, ka edhe dy lloje të trajtimit të gabimeve që do t'i diskutoj në seksionet vijuese.

1. VBA On Error GoTo 0

The On Error Goto 0 deklarata është cilësimi i integruar i Excel-it nëse kodet tuaja nuk kanë një mbajtës gabimesh në to. Në thelb nënkupton që kur VBA gjen një gabim me Në gabim GoTo 0 , ajo do të ndalojë ekzekutimin e kodit dhe do të shfaqë kutinë e mesazheve tradicionale të gabimit.

Në gabim GoTo 0 Deklarata në thelb çaktivizon trajtimin e gabimeve në procedurën aktuale. Nuk e përcakton rreshtin 0 si fillimin e kodit të trajtimit të gabimeve, edhe nëse metoda përfshin një rresht me numër 0.

Hidhini një sy kodit të mëposhtëm:

6155

Ne kemi ju tregoi tashmë këtë kod. Ky kod në thelb fsheh të gjitha fletët e punësnë librin tuaj aktual të punës. Tani, unë me të vërtetë kam një pjesë shtesë të kodit me On Error GoTo 0 për të treguar gabimin. Nëse ekzekutoni kodin, do të shihni sa vijon:

Shfaq këtë gabim sepse nuk mund të kemi fletë me të njëjtin emër në librin aktiv të punës.

2. VBA On Error GoTo rreshti

Tani, ju gjithashtu mund të udhëzoni Excel që të ekzekutojë një segment tjetër të kodit nëse gjen ndonjë gabim duke përdorur rreshtin Në Gabim GoTo . Ai i thotë Excel të ekzekutojë diçka pasi të gjejë një gabim.

Argumenti i linjës është çdo etiketë rreshti ose numër rreshti. Nëse kodi ynë shkakton ndonjë gabim në kohën e ekzekutimit, ai do të zhvendoset në linjë, duke shkaktuar aktiv mbajtësin e gabimeve në ekzekutim. Mbani mend, rreshti juaj i përcaktuar duhet të jetë në procedurën e saktë si deklarata On Error; përndryshe, do të shkaktojë një gabim përpilimi.

Hidhini një sy kodit të mëposhtëm:

6694

E keni parë kodin në shembullin e mëparshëm. Kur përdorëm Në gabim GoTo 0 , shkaktoi një gabim. Por, këtu e zëvendësuam atë me deklaratën On Error GoTo .

Tani, ekzekutoni kodin dhe do të shihni sa vijon:

Siç mund ta shihni, nuk na tregon kutinë e dialogut standard të gabimit. Në vend të kësaj, ai tregon kutinë e mesazheve të personalizuara që krijuam në segmentin error_handler . Kur Excel gjen ndonjë gabim, ai kalon në segmentin error_handler dhe na tregon kutinë e mesazhit.

Ne kemi përdorur gjithashtu një Exit Sub në procedurë.Nëse nuk ka asnjë fletë me emrin “ VLOOKUP ”, kodi ynë VBA do ta riemërtojë fletën aktive. Më pas, duhet të përfundojmë ekzekutimin këtu sepse nuk kemi nevojë të vazhdojmë te mbajtësi i gabimeve dhe të shfaqim kutinë e mesazheve.

VBA 'Për gabim' nuk funksionon në Excel

Ndonjëherë, pa marrë parasysh sa shumë përpiqeni, metoda On Error nuk do të funksionojë. Më parë, ne kemi zbatuar metodën Në gabim për të trajtuar gabimet. Por, ndonjëherë do të shfaqë gabime edhe nëse përdorni Në Gabim Rifillo Tjetër ose Në Gabim GoTo 0 . Mund të ketë disa arsye në kodin tuaj që duhet t'i rregulloni. Nuk do t'jua tregoj këtë.

Arsyeja themelore për mosfunksionimin e VBA ' Në gabim' në Excel është aktivizimi i opsionit "Break on All Errors" në Excel.

Ndiq këta hapa për të zgjidhur këtë:

📌 Hapat

  • Së pari, shtypni Alt+F11 në tastierë për të hapni redaktorin VBA.
  • Tani, klikoni në Mjetet > Opsionet.

  • Pas kësaj, klikoni në skedën Të përgjithshme në dialogun Opsionet kutia.

  • Këtu, ju mund të shihni, " Pushim në të gjitha gabimet " është zgjedhur tashmë. Në thelb ju pengon të trajtoni gabimet.
  • Për ta ndryshuar atë, zgjidhni opsionin " Ndalo gabimet e patrajtuara " dhe klikoni në OK .

Shpresoj se do të rregullojë problemin tuaj të VBA "Për gabim" që nuk funksionon në Excel.

Lexo më shumë: Arsyet dhe Korrigjimet

Hugh West është një trajner dhe analist me përvojë të lartë në Excel me mbi 10 vjet përvojë në industri. Ai ka një diplomë Bachelor në Kontabilitet dhe Financë dhe një Master në Administrim Biznesi. Hugh ka një pasion për mësimdhënien dhe ka zhvilluar një qasje unike të mësimdhënies që është e lehtë për t'u ndjekur dhe kuptuar. Njohuritë e tij eksperte të Excel-it kanë ndihmuar mijëra studentë dhe profesionistë në mbarë botën të përmirësojnë aftësitë e tyre dhe të shkëlqejnë në karrierën e tyre. Nëpërmjet blogut të tij, Hugh ndan njohuritë e tij me botën, duke ofruar mësime falas në Excel dhe trajnime në internet për të ndihmuar individët dhe bizneset të arrijnë potencialin e tyre të plotë.