Cum se depanează o macrocomandă Excel VBA care nu funcționează. Există instrumente uimitoare în Excel VBA care vă permit să vedeți valoarea curentă stocată în variabile în timp ce parcurgeți codul rând pe rând. Dacă aveți o macro care nu funcționează,
Urmăriți videoclipul
- Aveți o macro VBA Excel care nu funcționează
- VBA are instrumente de depanare uimitoare
- În loc să rulați codul, puteți parcurge codul folosind F8
- Linia în galben este linia pe care urmează să fie executată
- Plasați cursorul peste orice variabilă pentru a vedea valoarea acelei variabile.
- Comutați înainte și înapoi la Excel pentru a vedea ce se întâmplă
Transcriere video
Aflați Excel din Podcast, Episodul 2096: Depanarea macro VBA
Hei, bine ai revenit pe netcast, eu sunt Bill Jelen. Întrebarea de astăzi: cineva a avut un cod pe care l-am postat într-un videoclip YouTube vechi și au postat un comentariu spunând: „Ah, asta nu funcționează. Nu salvează factura duplicat, dar nu generează o eroare. ” Nu știu ce este în neregulă cu codul. În regulă, deci, știi, uite, există instrumente grozave care sunt disponibile atunci când ești VBA Macro nu funcționează. Deci avem aici un buton care ar trebui să ruleze un cod. Voi atribui macro-ul, se numește SaveInvoice. Voi face clic pe Editare și am terminat în VBA. Și în mod normal, atunci când apăsăm butonul, va rula acest cod. BAM! Ca și cum totul s-a întâmplat foarte repede, dar nu poți urmări ce se întâmplă.
Deci, sub instrumentele de depanare, unul dintre lucrurile mele preferate aici este Debug Step Into, pe care veți vedea că tasta de comandă rapidă este F8 și care ne permite să rulăm codul rând pe rând. Așa că am apăsat F8 acolo și aceasta este - linia în galben este linia pe care urmează să o execute. Deci, dacă apăs F8, acesta sare peste acele două declarații și acum suntem pe punctul de a face un ActiveSheet.Copy. Deci, ceea ce este cu adevărat frumos aici este, știți, mai ales dacă aveți un monitor mare că fereastra Podcast este mult prea mică, dar ceea ce puteți face este să puteți urmări cum rulează Macro. Așa că acum este pe punctul de a face ActiveSheet.Copy. În acest moment mă aflu într-un registru de lucru numit Podcast 2096. Iată o foaie de lucru numită Factură și când apăs F8, veți vedea că acum sunt într-un registru de lucru nou numit Book2 și avem doar factura, bine.
Și acum suntem pe punctul de a atribui acest lucru mare și lung Noului FN. Apăsați F8. Bine acum, nu părea să se fi întâmplat nimic aici, pentru că nimic nu s-a întâmplat aici. Dar iată ce este frumos, am atribuit acum acelei variabile numite New FN și dacă trec mouse-ul și trec peste New FN, va apărea un mic sfat de instrument care îmi arată ce este stocat în New FN. Deci salvează numele fișierului, există folderul în care va merge. Se numește Invoice1234 pentru că a luat valoarea de la F4 și apoi a adăugat PDF.
Bine acum, unul dintre cele mai frustrante lucruri despre Excel este că, dacă memoria începe să scadă, acest sfat al instrumentului nu vrea să apară. Vei plasa acolo și nu se va întâmpla nimic. Uneori trebuie să faceți clic pentru a compune aici și uneori pur și simplu nu va apărea deloc. Când nu va apărea deloc, ceea ce putem face este să facem Ctrl + G. Ctrl + G este fereastra imediată și apoi vom folosi? care este comanda rapidă pentru Debug.Print, NewFN. Cu alte cuvinte, spuneți-mi ce este în New FN și vă va arăta ce este în New FN chiar acolo.
Bine, așa că acum, suntem pe punctul de a rula această linie de cod care va crea un PDF. Bine, așa că voi apăsa F8. Bine, și în acest moment ar trebui să avem un nou PDF acolo cu 1234 și dacă mă uit în dosar, sigur că Inv1234 suficient pe 11 mai la 6:25 AM tocmai a fost creat. Minunat, nu?
Bine, acum ajungem la punctul în care avem problema. Bine, așa că apăsăm F8 aici și apare ca Duplicate Copy. Bine, a funcționat. Și apoi F8, și putem vedea ce este în New FN. Bine, deci are DupInv1234.pdf și puteți reveni chiar aici și doar faceți clic după Print NewFN și apoi veți vedea că am schimbat numele fișierului, bine. Deci, totul este mișto. Și apoi apăsăm F8 pentru a rula Crearea PDF-ului. Minunat! Totul arată grozav, nu?
Așadar, reveniți la fișierele noastre Podcast. Bine, dar în loc să am ceva numit DupInv1234, nu știu cum se numește ceva Book2. Bine, tocmai a fost creat acum un minut. Aceasta trebuie să fie singura! Se pare că este un nume greșit. Bine, așa că ne întoarcem la VBA și știu că tocmai i-am atribuit valoarea corectă New FN așa, bine. Și să vedem cum o salvăm. Îl salvăm ca un NewFN1 care este gol; și, deoarece este gol, înseamnă că ia numele fișierului, care în acest caz este Book2, deoarece am făcut o copie a acestuia. Și l-am schimbat - Oh, uite! Așa că aici, îi atribueam numele NewFN și apoi salvam acest NewFN1 și acum pentru că depanez și planez - Plutirea este cel mai mare lucru vreodată. Sper că voi reuși să-mi dau seama ce se întâmplă.Așa că mă întorc și schimb NewFN1. Acum, iată minunatul lucru. Bine, așa că am trecut deja de această linie în Macro, dar pot să o trag înapoi și să spun, bine, să rulăm din nou F8. Și acum să creăm PDF-ul. Bine, și acolo apare cu numele potrivit și totul este grozav.
Bine, acum că știu că am terminat, totul este grozav. Totul va merge de aici. Fac doar clic pe Executare și va rula până la sfârșitul codului. Bine, uneori veți avea un Macro lung cu, știți, sute de linii de cod care funcționează și apoi o anumită parte care nu funcționează, bine? Deci, doar câteva alte instrumente au fost menționate aici. Dacă trebuie să săriți peste o grămadă de cod și să rulați totul până la acel punct, o modalitate de a face acest lucru este să faceți clic aici și să creați un punct de întrerupere. Bine, așa că acum, când rulez acest lucru, totul va duce până la acel punct. Pot doar să fac clic pe Executare și se va opri sau, dacă nu vreți nici măcar să setați un Punct de întrerupere, vom face clic aici chiar și vom spune Depanare, Executare către cursor. Rulați la cursor.Acum știu că acest lucru va cauza o problemă aici, deoarece codul pentru a schimba acest număr de factură nu l-am conectat încă. Așa că voi pune doar un nou număr de factură și așa că sunt pe linia respectivă chiar acum. Depanare, Run To Cursor, care este Ctrl + F8. Bine, așa că acum s-a dus totul până la acel punct și ceea ce ar trebui să avem este că ar trebui să putem vedea că tocmai a creat Inv1235, bine. Și acum este vorba despre - suntem pe această linie de cod. Pot doar să apăs F8 pentru a rula o singură linie sau pur și simplu să rulez restul drumului. Și acolo este DupInv1235, bine? Deci, instrumentele de depanare din VBA sunt minunate. Să rulați un cod rând pe rând, să aranjați ecranul astfel încât să putem vedea atât codul care rulează, cât și rezultatele codului în partea stângă. Și știi, sperăm, că poți da seama ce se întâmplă cu codul.
Bine, deci recapitulați episodul: aveți o macro VBA Excel care nu funcționează. Are instrumente de depanare uimitoare. În loc să rulați codul, puteți parcurge codul folosind F8. Linia în galben este linia care urmează să fie executată. Puteți trece cu mouse-ul peste variabilă pentru a vedea valoarea acelei variabile, comutați înainte și înapoi la Excel pentru a vedea ce se întâmplă.
Ei bine, vreau să-ți mulțumesc că ai trecut pe aici. Ne vedem data viitoare pentru un alt netcast de la.
Descărcare fișier
Descărcați exemplarul de fișier aici: Podcast2096.xlsm