Feilsøking av VBA-makro - Excel-tips

Hvordan feilsøke en Excel VBA-makro som ikke fungerer. Det er fantastiske verktøy i Excel VBA som lar deg se gjeldende verdi lagret i variabler når du går gjennom koden en linje om gangen. Hvis du har en makro som ikke fungerer,

Se på video

  • Du har en Excel VBA-makro som ikke fungerer
  • VBA har fantastiske feilsøkingsverktøy
  • I stedet for å kjøre koden din, kan du gå gjennom koden ved hjelp av F8
  • Linjen i gult er linjen som den skal kjøres
  • Hold markøren over en variabel for å se verdien til den variabelen.
  • Bytt frem og tilbake til Excel for å se hva som skjer

Videoutskrift

Lær Excel fra Podcast, episode 2096: Feilsøking av VBA-makro

Hei, velkommen tilbake til netcast, jeg er Bill Jelen. Dagens spørsmål: Noen hadde noen kode som jeg la ut på en gammel YouTube-video, og de la ut en kommentar som sa: “Ah, det fungerer ikke. Det lagrer ikke duplikatfakturaen, men det kaster ikke feil. ” Jeg vet ikke hva som er galt med koden. Greit så, du vet, se, det er flotte verktøy som er tilgjengelige når du er VBA Macro ikke fungerer. Så vi har en knapp her som skal kjøre litt kode. Jeg skal tilordne makroen, den heter SaveInvoice. Jeg klikker på Rediger, så er vi over i VBA. Og normalt når vi trykker på den knappen, kjører den bare denne koden. BAM! Som om alt skjedde veldig raskt, men du kan ikke se hva som skjer.

Så under feilsøkingsverktøyene er en av favoritt tingene mine her Feilsøking trinn inn, som du vil se hurtigtasten er F8, og som lar oss kjøre koden en linje om gangen. Så jeg trykket på F8 der, og dette er - linjen i gult er linjen den skal utføres. Så hvis jeg trykker på F8, hopper den over de to erklæringene, og nå skal vi gjøre et ActiveSheet.Copy. Så det som er veldig vakkert her er, vet du, spesielt hvis du har en stor skjerm som Podcast-vinduet er altfor lite, men det du kan gjøre er at du kan se makroen løpe. Så akkurat nå er det i ferd med å gjøre ActiveSheet.Copy. Akkurat nå er jeg i en arbeidsbok som heter Podcast 2096. Her er et regneark som heter Faktura, og når jeg trykker på F8, vil du se at jeg nå er på en helt ny arbeidsbok som heter Book2, og vi har bare fakturaen, ok.

Og nå skal vi tildele denne store, lange tingen til Nye FN. Trykk på F8. Greit nå, det så ikke ut som om noe skjedde her fordi ingenting skjedde her borte. Men her er den vakre tingen, jeg har nå tildelt noe til den variabelen som heter New FN, og hvis jeg tar musen og svever over New FN, vises et lite verktøystips som viser meg hva som er lagret i New FN. Så det lagrer filnavnet, det er mappen der den skal gå. Det heter Invoice1234 fordi det tok verdien fra F4 og deretter la til PDF.

Greit nå, en av de mest frustrerende tingene med Excel er at hvis minnet ditt begynner å bli lavt, vil ikke dette verktøytipset vises. Du vil sveve der og ingenting vil skje. Noen ganger må du klikke for å gjøre det her, og noen ganger vil det bare ikke vises i det hele tatt. Når det ikke vises i det hele tatt, kan vi gjøre Ctrl + G. Ctrl + G er det umiddelbare vinduet, og så skal vi bruke det? som er snarveien til Debug.Print, NewFN. Så med andre ord, fortell meg hva som er i New FN, og det vil vise deg hva som er i New FN akkurat der.

Greit så nå, vi er i ferd med å kjøre denne kodelinjen som vil lage en PDF. OK, så jeg trykker på F8. Greit, og på dette tidspunktet burde vi ha en ny PDF der ute med 1234, og hvis jeg ser i mappen, var det sikkert nok Inv1234 11. mai klokka 06:25 ble opprettet. Fantastisk, ikke sant?

OK, nå kommer vi til det punktet hvor vi har problemet. OK, så vi trykker på F8 her, og det vises som duplikatkopi. Greit, det fungerte. Og så F8, og vi kan se hva som er i New FN. OK, så den har DupInv1234.pdf, og du kan til og med komme tilbake hit og bare klikke etter Print NewFN, så ser du at vi har endret filnavnet, ok. Så alt er kult. Og så trykker vi på F8 for å kjøre Opprette PDF. Rått! Alt ser bra ut, ikke sant?

Så kom tilbake til våre Podcast-filer. Greit, men i stedet for å ha noe som heter DupInv1234, vet jeg ikke hvordan noe som heter Book2. Ok, det ble nettopp opprettet for et minutt siden. Dette må være den ene, men gi! Det ser ut til å være feil navn. Ok, så vi kommer tilbake til VBA, og jeg vet at jeg nettopp tildelte den riktige verdien til New FN slik, ok. Og la oss se hva vi lagrer det som. Vi lagrer det som en NewFN1 som er tom; og siden den er tom betyr det at den tar filnavnet som i dette tilfellet er Book2 siden jeg laget en kopi av den. Og endret det - Å se! Så her tildelte jeg navnet til NewFN og lagret deretter NewFN1, og nå fordi jeg feilsøker og svever - Svever er den største tingen noensinne. Jeg forhåpentligvis vil være i stand til å finne ut hva som skjer.Så jeg kommer tilbake og endrer NewFN1. Her er den fantastiske tingen. Ok, så har allerede passert denne linjen i makro, men jeg kan dra dette opp igjen og si, ok, la oss kjøre dette igjen F8. Og la oss nå lage PDF-en. Greit, og der dukker det opp med riktig navn, og alt er kult.

Greit, nå som jeg vet at jeg er ferdig, er alt bra. Alt kommer til å fungere herfra. Jeg klikker bare Kjør, så løper den til slutten av koden. OK, noen ganger har du en lang makro med hundrevis av kodelinjer som fungerer, og deretter en bestemt del som ikke fungerer, ok? Så et par andre verktøy ble nettopp nevnt her. Hvis du trenger å hoppe over en hel haug med kode og kjøre alt til det punktet, vel, en måte å gjøre det på er å klikke her og opprette et Breakpoint. OK, så når jeg kjører dette, vil det kjøre alt ned til det punktet. Jeg kan bare klikke på run og det vil stoppe, eller hvis du ikke en gang vil sette et Breakpoint, klikker vi bare her og sier Debug, Run To Cursor. Kjør til markøren.Nå vet jeg at dette vil føre til et problem her fordi koden for å endre dette fakturanummeret, jeg ikke koblet opp ennå. Så jeg legger bare inn et nytt fakturanummer, så jeg er på den linjen akkurat nå. Feilsøk, kjør til markør som er Ctrl + F8. OK, så nå løp det alt ned til det punktet, og det vi burde ha er at vi skal kunne se at det nettopp skapte Inv1235, ok. Og nå handler det om - vi er på denne kodelinjen. Jeg kan bare enten trykke F8 for å kjøre en linje eller bare kjøre resten av veien. Og det er vår DupInv1235, ok? Så feilsøkingsverktøyene her i VBA er kjempebra. La oss kjøre en kode om gangen, ordne skjermen slik at vi kan se både koden som kjører og resultatene av koden til venstre. Og du vet forhåpentligvis at du kan finne ut hva som går galt med koden.

OK, så episodeoppsummering: Ha en Excel VBA-makro som ikke fungerer. Den har fantastiske feilsøkingsverktøy. I stedet for å kjøre koden din, kan du gå gjennom koden ved hjelp av F8. Linjen i gult er linjen som er i ferd med å kjøres. Du kan sveve over variabelen for å se verdien av den variabelen, veksle frem og tilbake til Excel for å se hva som skjer.

Vel, hei, jeg vil takke deg for at du var innom. Vi sees neste gang for en ny netcast fra.

Last ned fil

Last ned eksempelfilen her: Podcast2096.xlsm

Interessante artikler...