Otklanjanje pogrešaka u VBA makronaredbi - Excel savjeti

Kako ispraviti pogrešku u makronaredbi programa Excel VBA koja ne radi. U Excelu VBA postoje nevjerojatni alati koji vam omogućuju da vidite trenutnu vrijednost pohranjenu u varijablama dok prolazite kroz kôd po jedan redak. Ako imate makronaredbu koja ne radi,

Gledaj video

  • Imate makronaredbu Excel VBA koja ne radi
  • VBA ima nevjerojatne alate za uklanjanje pogrešaka
  • Umjesto da pokrenete svoj kôd, možete ga proći pomoću F8
  • Redak u žutoj boji je red koji će se pokrenuti
  • Zadržite pokazivač iznad bilo koje varijable da biste vidjeli vrijednost te varijable.
  • Prelazite naprijed-natrag u Excel da biste vidjeli što se događa

Prijepis videozapisa

Naučite Excel iz Podcasta, epizoda 2096: Otklanjanje pogrešaka u VBA makronaredbi

Hej, dobrodošao natrag na netcast, ja sam Bill Jelen. Današnje pitanje: Netko je imao neki kôd koji sam objavio na starom YouTube videu i oni su objavili komentar rekavši: "Ah, to ne ide. Ne sprema duplikat fakture, ali ne dovodi do pogreške. " Ne znam što nije u redu s kodom. Pa dobro, znate, pogledajte, postoje izvrsni alati koji su dostupni kada VBA Macro ne radi. Dakle, ovdje imamo gumb koji bi trebao pokretati neki kôd. Idem dodijeliti makronaredbu, zove se SaveInvoice. Kliknut ću Uredi i završili smo s VBA-om. I obično kad pritisnemo taj gumb, pokrenut će se ovaj kod. BAM! Kao da se sve dogodilo jako brzo, ali ne možete gledati što se događa.

Dakle, pod alatima za otklanjanje pogrešaka, jedna od mojih najdražih stvari ovdje je Debug Step Into, za koju ćete vidjeti da je prečac F8, a to nam omogućuje pokretanje koda jedan po jedan redak. Pa sam tamo pritisnuo F8 i to je - crta u žutoj liniji je linija koju će uskoro izvršiti. Dakle, ako pritisnem F8, preskače te dvije deklaracije i sad ćemo napraviti ActiveSheet.Copy. Dakle, ono što je ovdje zaista lijepo, znate, pogotovo ako imate velik monitor da je prozor Podcasta premalen, ali ono što možete učiniti je da možete gledati kako Macro radi. Dakle, upravo ćemo sada napraviti ActiveSheet.Copy. Trenutno sam u radnoj knjižici pod nazivom Podcast 2096. Evo radnog lista pod nazivom Faktura i kad pritisnem F8, vidjet ćete da sam sada u potpuno novoj radnoj knjižici koja se zove Book2 i u redu imamo samo Fakturu.

I sada ćemo dodijeliti ovu veliku, dugu stvar Novom FN-u. Pritisnite F8. Dobro, nije izgledalo kao da se išta ovdje dogodilo jer se ovdje ništa nije dogodilo. Ali ovdje je lijepa stvar, sada sam toj varijabli dodijelio nešto pod nazivom New FN i ako postavim miš i zadržim pokazivač iznad New FN, pojavit će se mali savjet alata koji će mi pokazati što je pohranjeno u New FN. Dakle, sprema naziv datoteke, tu je mapa u koju će ići. Zove se Invoice1234 jer je uzeo vrijednost iz F4, a zatim je dodao PDF.

Dobro, sada je jedna od najfrustriranijih stvari u vezi s Excelom da ako se vaša memorija počne smanjivati, ovaj se savjet alata ne želi pojavljivati. Lebdjet ćete tamo i ništa se neće dogoditi. Ponekad morate kliknuti da biste to ovdje izmislili, a ponekad se jednostavno uopće neće pojaviti. Kad se uopće neće pojaviti, ono što možemo je Ctrl + G. Ctrl + G je neposredni prozor i tada ćemo ga koristiti? što je prečac za Debug.Print, NewFN. Drugim riječima, recite mi što je u Novom FN-u i on će vam pokazati što je u Novom FN-u upravo tamo.

U redu, sada ćemo pokrenuti ovaj redak koda koji će stvoriti PDF. U redu, pa ću pritisnuti F8. U redu, i u ovom bismo trenutku trebali imati novi PDF s brojem 1234 i ako odem pogledati mapu, dovoljno je da je upravo stvoren Inv1234 11. svibnja u 6:25. Super, zar ne?

Dobro, sad dolazimo do točke u kojoj imamo problem. U redu, ovdje pritisnemo F8 i prikazat će se kao Duplicate Copy. U redu, to je uspjelo. A onda F8, i možemo vidjeti što je u Novom FN-u. U redu, dakle, ima DupInv1234.pdf, a možete se čak vratiti ovdje i samo kliknuti Print NewFN i tada ćete vidjeti da smo promijenili naziv datoteke, u redu. Dakle, sve je u redu. A zatim pritisnemo F8 da pokrenemo Stvaranje PDF-a. Super! Sve izgleda sjajno, zar ne?

Vratite se našim datotekama Podcasta. Dobro, ali umjesto da imam nešto što se zove DupInv1234, jednostavno ne znam kako se nešto zove Book2. U redu, upravo je stvoren prije minutu. Ovo mora biti jedan ali ne! Čini se da je to pogrešno ime. Dobro, vraćamo se na VBA i znam da sam upravo tako dodijelio pravu vrijednost Novom FN-u, u redu. I da vidimo kako to štedimo. Spremamo ga kao noviFN1 koji je prazan; a budući da je prazan, to znači da uzima naziv datoteke, što je u ovom slučaju Book2, budući da sam je kopirao. I promijenio ga - Ma vidi! Dakle, evo, dodijelio sam ime NewFN-u, a zatim spremio ovaj NewFN1, a sada zato što ispravljam pogreške i lebdim - Lebdenje je najveća stvar ikad. Nadam se da ću uspjeti shvatiti što se događa.Tako se vraćam i mijenjam NewFN1. Eto, ovo je sjajna stvar. Dobro, već sam prošao ovu liniju u Makronaredbi, ali mogu je povući natrag i reći, u redu, pokrenimo ovo ponovo F8. A sada kreirajmo PDF. Dobro, i tamo se pojavi s pravim imenom i sve je u redu.

U redu, sad kad znam da sam završio, sve je super. Odavde će sve funkcionirati. Jednostavno kliknem Pokreni i pokrenut će se do kraja koda. U redu, ponekad ćete imati dugački Macro sa, znate, stotinama redaka koda koji rade i onda jednim određenim dijelom koji ne radi, u redu? Dakle, ovdje je upravo spomenuto nekoliko drugih alata. Ako trebate preskočiti čitavu hrpu koda i pokrenuti sve do te točke, jedan od načina da to učinite je kliknuti ovdje i stvoriti točku prekida. U redu, pa sad kad pokrenem ovo, sve će se svesti do te točke. Samo mogu kliknuti trčanje i zaustavit će se, ili ako čak ne želite postaviti točku prekida, jednostavno ćemo kliknuti ovdje i reći Otklanjanje pogrešaka, trčanje u kursor. Trči u kursor.Sada znam da će ovo ovdje stvoriti problem jer se kod za promjenu broja računa još nisam spojio. Dakle, samo ću staviti novi broj fakture i tako sam trenutno na toj liniji. Otklanjanje pogrešaka, trčanje do kursora koji je Ctrl + F8. Dobro, sad je sve svelo do te točke i ono što bismo trebali imati je da bismo trebali vidjeti da je upravo stvorio Inv1235, u redu. A sad je otprilike - na ovom smo retku koda. Jednostavno mogu pritisnuti F8 da bih pokrenuo jedan redak ili samo trčao ostatak puta. A tu je i naš DupInv1235, u redu? Dakle, alati za otklanjanje pogrešaka ovdje u VBA-u su sjajni. Pokrećemo kôd po jedan redak, uredite zaslon tako da s lijeve strane možemo vidjeti i kôd koji se izvodi i rezultate koda. I znate, nadam se, možete shvatiti što se događa s kodom.

U redu, rezime epizode: Nabavite Excel VBA makronaredbu koja ne radi. Ima nevjerojatne alate za uklanjanje pogrešaka. Umjesto da pokrenete svoj kôd, možete ga proći pomoću F8. Linija u žutoj boji je linija koja će se pokrenuti. Možete zadržati pokazivač iznad varijable da biste vidjeli vrijednost te varijable, prebacite se naprijed-natrag u Excel da biste vidjeli što se događa.

Pa, hej, želim ti zahvaliti što si svratio. Vidimo se sljedeći put za još jedan prijenos od.

Preuzmi datoteku

Preuzmite datoteku uzorka ovdje: Podcast2096.xlsm

Zanimljivi članci...