Felsökning av VBA-makro - Excel-tips

Så här felsöker du ett Excel VBA-makro som inte fungerar. Det finns fantastiska verktyg i Excel VBA som låter dig se det aktuella värdet som lagras i variabler när du går igenom koden en rad i taget. Om du har ett makro som inte fungerar,

Kolla på video

  • Du har en Excel VBA-makro som inte fungerar
  • VBA har fantastiska felsökningsverktyg
  • I stället för att köra din kod kan du gå igenom koden med F8
  • Linjen i gult är den linje som den ska köras
  • Håll muspekaren över en variabel för att se värdet på den variabeln.
  • Växla fram och tillbaka till Excel för att se vad som händer

Videoutskrift

Lär dig Excel från Podcast, avsnitt 2096: Felsökning av VBA-makro

Hej, välkommen tillbaka till netcast, jag heter Bill Jelen. Dagens fråga: Någon hade någon kod som jag lade upp på en gammal YouTube-video och de lade upp en kommentar som sa: ”Ah, det fungerar inte. Det sparar inte den dubbla fakturan men det ger inte ett fel. ” Jag vet inte vad som är fel med koden. Okej så, du vet, se, det finns fantastiska verktyg som är tillgängliga när du är VBA-makro inte fungerar. Så vi har en knapp här som ska köra lite kod. Jag ska tilldela makroen, den heter SaveInvoice. Jag klickar på Redigera så är vi över i VBA. Och normalt när vi trycker på den knappen kommer den bara att köra den här koden. BAM! Som att allt hände riktigt snabbt men du kan inte se vad som händer.

Så under felsökningsverktygen är en av mina favorit saker här Debug Step Into, där du ser att snabbtangenten är F8, och det låter oss köra koden en rad i taget. Så jag tryckte på F8 där och det här är - raden i gult är den linje som den håller på att utföra. Så om jag trycker på F8 hoppar den över de två deklarationerna och nu ska vi göra ett ActiveSheet.Copy. Så vad som är riktigt vackert här är, du vet, speciellt om du har en stor bildskärm som Podcast-fönstret är alldeles för litet, men vad du kan göra är att du kan se makron köras. Så just nu är det på väg att göra ActiveSheet.Copy. Just nu sitter jag i en arbetsbok som heter Podcast 2096. Här är ett kalkylblad som heter Faktura och när jag trycker på F8 ser du att jag nu är på en helt ny arbetsbok som heter Book2 och vi har bara fakturan, okej.

Och nu ska vi tilldela denna stora, långa sak till Nya FN. Tryck på F8. Okej nu, det såg inte ut som att något hände här för att inget hände här. Men här är det vackra, jag har nu tilldelat något till den variabeln som heter New FN och om jag tar min mus och svävar över New FN kommer ett litet verktygstips att visas som visar mig vad som är lagrat i New FN. Så det sparar filnamnet, det finns mappen där den ska gå. Det heter Invoice1234 eftersom det tog värdet från F4 och lade sedan till PDF.

Okej nu, en av de mest frustrerande sakerna med Excel är att om ditt minne börjar bli lågt vill det här verktyget inte visas. Du svävar där och ingenting kommer att hända. Ibland måste du klicka för att göra det här och ibland visas det inte alls. När det inte visas alls, kan vi göra Ctrl + G. Ctrl + G är det omedelbara fönstret och då ska vi använda det? vilket är genvägen för Debug.Print, NewFN. Så med andra ord, säg mig vad som finns i nya FN och det kommer att visa dig vad som finns i nya FN där.

Okej så nu ska vi köra denna kodrad som skapar en PDF. Okej, så jag trycker på F8. Okej, och vid den här tiden borde vi ha en ny PDF där ute med 1234 och om jag går och tittar i mappen, så skapades nog tillräckligt Inv1234 den 11 maj kl 06:25. Fantastiskt, eller hur?

Okej, nu kommer vi till den punkt där vi har problemet. Okej, så vi trycker på F8 här och det visas som duplicerad kopia. Okej, det fungerade. Och sedan F8, och vi kan se vad som finns i nya FN. Okej, så det har DupInv1234.pdf och du kan till och med komma tillbaka hit och klicka bara efter Skriv ut NewFN så ser du att vi har ändrat filnamnet, okej. Så allt är coolt. Och sedan trycker vi på F8 för att köra Skapa PDF. Grymt bra! Allt ser bra ut, eller hur?

Så kom tillbaka till våra Podcast-filer. Okej, men istället för att ha något som heter DupInv1234 vet jag bara inte hur något som heter Book2. Okej, det skapades precis för en minut sedan. Det här måste vara det! Det verkar vara fel namn. Okej, så vi kommer tillbaka till VBA och jag vet att jag precis tilldelade rätt värde till Nya FN så, okej. Och låt oss se vad vi sparar det som. Vi sparar det som en NewFN1 som är tom; och eftersom det är tomt betyder det att det tar filnamnet som i det här fallet är Book2 eftersom jag gjorde en kopia av det. Och ändrade det - Åh se! Så här tilldelade jag namnet till NewFN och sparade sedan den här NewFN1, och nu för att jag felsöker och svävar - Hovering är det bästa någonsin. Jag kommer förhoppningsvis att kunna räkna ut vad som händer.Så jag kommer tillbaka och byter NewFN1. Nu, här är den fantastiska saken. Okej, så passerade redan denna linje i makro men jag kan dra upp det här igen och säga, okej, låt oss köra det igen F8. Och nu ska vi skapa PDF-filen. Okej, och där dyker det upp med rätt namn och allt är coolt.

Okej, nu när jag vet att jag är klar är allt bra. Allt kommer att fungera härifrån. Jag klickar bara på Kör så kör den till slutet av koden. Okej, ibland har du en lång makro med, du vet, hundratals rader kod som fungerar och sedan en viss del som inte fungerar, okej? Så några andra verktyg nämndes här. Om du behöver hoppa över en hel massa kod och köra allt fram till den punkten, ja, ett sätt att göra det är att klicka här och skapa en brytpunkt. Okej, så nu när jag kör det här kommer det att köra allt ner till den punkten. Jag kan bara klicka på run och det kommer att sluta, eller om du inte ens vill ställa in en brytpunkt, klickar vi bara här och säger Debug, Run To Cursor. Spring till markören.Nu vet jag att detta kommer att orsaka ett problem här eftersom koden för att ändra detta fakturanummer, jag kopplade inte upp ännu. Så jag lägger bara in ett nytt fakturanummer och jag är på den raden just nu. Felsöka, kör till markören som är Ctrl + F8. Okej, så nu sprang allt ner till den punkten och vad vi borde ha är att vi borde kunna se att det just skapade Inv1235, okej. Och nu handlar det om - vi är på den här raden kod. Jag kan bara antingen trycka på F8 för att köra en rad eller bara springa resten av vägen. Och det finns vår DupInv1235, okej? Så, felsökningsverktygen här i VBA är fantastiska. Låt oss köra en kod en rad i taget, ordna din skärm så att vi kan se både koden som körs och resultatet av koden till vänster. Och du vet förhoppningsvis att du kan ta reda på vad som går fel med koden.

Okej, så avsnittet sammanfattar: Ha en Excel VBA-makro som inte fungerar. Den har fantastiska felsökningsverktyg. I stället för att köra din kod kan du gå igenom koden med F8. Linjen i gult är den linje som ska köras. Du kan hålla muspekaren över variabeln för att se värdet på variabeln, växla fram och tillbaka till Excel för att se vad som händer.

Tja, hej, jag vill tacka dig för att du kom in. Vi ses nästa gång för en ny netcast från.

Nedladdning fil

Ladda ner exempelfilen här: Podcast2096.xlsm

Intressanta artiklar...