Fejlfinding af VBA-makro - Excel-tip

Indholdsfortegnelse

Sådan debugges en Excel VBA-makro, der ikke fungerer. Der er fantastiske værktøjer i Excel VBA, der giver dig mulighed for at se den aktuelle værdi, der er gemt i variabler, når du går gennem koden en linje ad gangen. Hvis du har en makro, der ikke fungerer,

Se video

  • Du har en Excel VBA-makro, der ikke fungerer
  • VBA har fantastiske fejlretningsværktøjer
  • I stedet for at køre din kode kan du gå igennem koden ved hjælp af F8
  • Linjen med gult er den linje, den skal køres
  • Hold markøren over en variabel for at se værdien af ​​den variabel.
  • Skift frem og tilbage til Excel for at se, hvad der sker

Videoudskrift

Lær Excel fra Podcast, afsnit 2096: Fejlfinding af VBA-makro

Hej, velkommen tilbage til netcast, jeg er Bill Jelen. Dagens spørgsmål: Nogen havde en kode, som jeg sendte på en gammel YouTube-video, og de sendte en kommentar, der sagde: ”Åh, det fungerer ikke. Det gemmer ikke den duplikerede faktura, men det kaster ikke en fejl. ” Jeg ved ikke, hvad der er galt med koden. Okay, du ved, se, der er gode værktøjer, der er tilgængelige, når du er VBA-makro ikke fungerer. Så vi har en knap her, der skal køre noget kode. Jeg tildeler makroen, den hedder SaveInvoice. Jeg klikker på Rediger, og vi er over i VBA. Og normalt når vi trykker på den knap, kører den bare denne kode. BAM! Som om det hele skete meget hurtigt, men du kan ikke se, hvad der sker.

Så under Debug-værktøjerne er en af ​​mine yndlings ting her Debug Step Into, som du vil se, at genvejstasten er F8, og det lader os køre koden en linje ad gangen. Så jeg trykkede på F8 der, og dette er - linjen i gult er den linje, den skal udføres. Så hvis jeg trykker på F8, springer den over disse to erklæringer, og nu skal vi lave et ActiveSheet.Copy. Så hvad der virkelig er smukt her er, ved du, især hvis du har en stor skærm, at Podcast-vinduet er alt for lille, men hvad du kan gøre er, at du kan se makroen køre. Så lige nu er det ved at lave ActiveSheet.Copy. Lige nu sidder jeg i en projektmappe kaldet Podcast 2096. Her er et regneark kaldet Faktura, og når jeg trykker på F8, ser du, at jeg nu er på en helt ny projektmappe, der hedder Book2, og vi har netop fakturaen, okay.

Og nu er vi ved at tildele denne store, lange ting til New FN. Tryk på F8. Okay, det så ikke ud som om der skete noget herovre, fordi der ikke skete noget herover. Men her er den smukke ting, jeg har nu tildelt noget til den variabel, der hedder New FN, og hvis jeg tager min mus og svæver over New FN, vises der et lille værktøjstip, der viser mig, hvad der er gemt i New FN. Så det gemmer filnavnet, der er mappen, hvor den skal hen. Det hedder Invoice1234, fordi det tog værdien fra F4 og derefter tilføjede PDF.

Okay nu, en af ​​de mest frustrerende ting ved Excel er, at hvis din hukommelse begynder at blive lav, ønsker dette værktøjstip ikke at blive vist. Du svæver der, og intet vil ske. Nogle gange skal du klikke for at gøre det her, og nogle gange vises det slet ikke. Når det slet ikke vises, kan vi gøre Ctrl + G. Ctrl + G er det øjeblikkelige vindue, og så skal vi bruge? som er genvejen til Debug.Print, NewFN. Så med andre ord, fortæl mig, hvad der er i New FN, og det viser dig, hvad der er i New FN lige der.

Okay så nu er vi ved at køre denne kodelinje, som opretter en PDF. Okay, så jeg trykker på F8. Okay, og på dette tidspunkt skal vi have en ny PDF derude med 1234, og hvis jeg kigger i mappen, er Inv1234 helt sikkert den 11. maj kl. 06:25 netop oprettet. Fantastisk, ikke?

Okay, nu er vi kommet til det punkt, hvor vi har problemet. Okay, så vi trykker på F8 her, og det vises som duplikatkopi. Okay, det fungerede. Og så F8, og vi kan se, hvad der er i New FN. Okay, så det har DupInv1234.pdf, og du kan endda komme tilbage her og bare klikke efter Udskriv NewFN, og så vil du se, at vi har ændret filnavnet, okay. Så alt er sejt. Og så trykker vi på F8 for at køre Oprettelse af PDF. Fantastisk! Alt ser godt ud, ikke?

Så kom tilbage til vores Podcast-filer. Okay, men i stedet for at have noget, der hedder DupInv1234, ved jeg bare ikke, hvordan noget kaldes Book2. Okay, det blev lige oprettet for et minut siden. Dette skal være den ene, men gee! Det ser ud til at være det forkerte navn. Okay, så vi kommer tilbage til VBA, og jeg ved, at jeg lige har tildelt den rigtige værdi til New FN sådan, okay. Og lad os se, hvad vi gemmer det som. Vi gemmer det som en NewFN1, som er tom; og da det er tom betyder det, at det tager filnavnet, som i dette tilfælde er Book2, da jeg lavede en kopi af det. Og ændret det - Åh se! Så her tildelte jeg navnet til NewFN og gemte derefter dette NewFN1, og nu fordi jeg fejler og svæver - Hovering er den største ting nogensinde. Jeg forhåbentlig vil være i stand til at finde ud af, hvad der foregår.Så jeg kommer tilbage og skifter NewFN1. Her er den fantastiske ting. Okay, så allerede passeret denne linje i makro, men jeg kan trække dette op igen og sige, okay, lad os køre dette igen F8. Og lad os nu oprette PDF-filen. Okay, og der dukker det op med det rigtige navn, og alt er sejt.

Okay, nu hvor jeg ved, at jeg er færdig, er alt godt. Alt fungerer herfra. Jeg klikker bare på Kør, så løber den til slutningen af ​​koden. Okay, nogle gange har du en lang makro med, du ved, hundreder af linjer med kode, der fungerer, og så en bestemt del, der ikke fungerer, okay? Så et par andre værktøjer blev netop nævnt her. Hvis du har brug for at springe over en hel masse kode og køre alt op til det punkt, ja, en måde at gøre det på er at klikke her og oprette et Breakpoint. Okay, så når jeg kører dette, kører det alt til det punkt. Jeg kan bare klikke på kør, og det stopper, eller hvis du ikke engang vil indstille et brydepunkt, skal vi bare klikke lige her og sige Fejlretning, Kør til markør. Kør til markøren.Nu ved jeg, at dette vil forårsage et problem her, fordi koden til at ændre dette fakturanummer, jeg tilsluttede mig ikke endnu. Så jeg lægger bare et nyt fakturanummer ind, så jeg er på den linje lige nu. Fejlfinding, kør til markør, som er Ctrl + F8. Okay, så nu kørte det alt til det punkt, og hvad vi skulle have er, at vi skulle være i stand til at se, at det lige skabte Inv1235, okay. Og nu handler det om - vi er på denne linje kode. Jeg kan bare enten trykke på F8 for at køre en linje eller bare køre resten af ​​vejen. Og der er vores DupInv1235, okay? Så debugværktøjerne her i VBA er fantastiske. Lad os køre en kode en linje ad gangen, arrangere din skærm, så vi kan se både den kode, der kører, og resultaterne af koden til venstre. Og du ved forhåbentlig, at du kan finde ud af, hvad der går galt med koden.

Okay, så afsnit sammenfatning: Har en Excel VBA-makro, der ikke fungerer. Det har fantastiske fejlretningsværktøjer. I stedet for at køre din kode kan du gå igennem koden ved hjælp af F8. Linjen med gult er den linje, der er ved at blive kørt. Du kan svæve over variablen for at se værdien af ​​den variabel, skifte frem og tilbage til Excel for at se, hvad der sker.

Nå, hej, jeg vil gerne takke dig, fordi du kom forbi. Vi ses næste gang til endnu en netcast fra.

Download fil

Download eksempelfilen her: Podcast2096.xlsm

Interessante artikler...