Du kan kjøre inn i noen problemer med VBA-kode, men hvordan finner du problemet? Noen ganger VBA-kode kan trenge litt feilsøking. Hold lesing for å finne de fire mest vanlige metodene for debugging Excel VBA-kode:
Undersøke koden
Sette MsgBox funksjoner på ulike steder i koden
Sette Debug.Print uttalelser
Bruke Excel innebygde feilsøkingsverktøy
Undersøke koden
Kanskje den enkleste debugging teknikk er bare å ta en nærmere titt på koden din for å se om du kan finne problemet. Denne metoden, selvfølgelig, krever kunnskap og erfaring. Med andre ord, må du vite hva du gjør. Hvis du er heldig, hopper feilen rett ut, og du klapse pannen og si: "D'oh!" Når pannen smerter avtar, kan du fikse problemet.
Legg merke til bruken av ordene "Hvis du er heldig." Det er fordi ofte du oppdage feil når du har jobbet med programmet i åtte timer i strekk, er det 2 am, og du kjører på koffein og viljestyrke. Til tider som dette, er du heldig hvis du kan selv se koden din, enn si finne bugs. Dermed ikke bli overrasket om rett og slett undersøke koden din er ikke nok til å få deg til å finne og expunge alle feilene den inneholder.
Bruke MsgBox funksjonen
Et vanlig problem i mange programmer involverer en eller flere variabler ikke å ta på verdiene du forventer. I slike tilfeller, overvåking av variable (r), mens koden går er en nyttig teknikk for feilretting. En måte å gjøre dette på er ved å sette inn midlertidige MsgBox funksjoner inn i rutinen. For eksempel, hvis du har en variabel som heter CellCount, kan du sette inn følgende uttalelse:
MsgBox CellCount
Når du utføre rutinen, viser MsgBox funksjonen CellCount verdi
Det er ofte nyttig å vise. verdiene av to eller flere variabler i meldingsboksen. Følgende uttalelse viser gjeldende verdi av to variabler: LoopIndex (1) og CellCount (72), atskilt med et mellomrom
MsgBox LoopIndex &. "" &Amp; CellCount
Legg merke til at de to variablene er kombinert med den sammensetning operatør (&) og sette inn et mellomrom mellom dem. Ellers strykere meldingsboksen de to verdiene sammen, noe som gjør dem ser ut som en enkelt verdi. Du kan også bruke den innebygde konstant, vbNewLine, i stedet for mellomrom. vbNewLine setter inn et linjeskift pause, som viser teksten på en ny linje. Følgende uttalelse viser tre variabler, hver på en egen linje:
Ved hjelp av en meldingsboks for å vise verdien på tre variables.MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Denne teknikken ikke er begrenset til overvåking variabler. Du kan bruke en meldingsboks for å vise alle slags nyttig informasjon mens koden din kjører. For eksempel, hvis din kode looper gjennom en rekke plater, viser følgende uttalelse navn og type av det aktive arket:
MsgBox ActiveSheet.Name & "" &Amp; Typename (Active)
Hvis meldingen boksen viser noe uventet, trykk Ctrl + Break, og du ser en dialogboks som forteller deg med kjøring av kode har blitt avbrutt, har du fire valg:
Klikk Fortsett . Koden fortsetter utførende.
Trykker Ctrl + Break stanser henrettelsen av koden din og gir deg noen valg.
Hvis tastaturet ikke har en Break-tasten, kan du prøve å trykke Ctrl + Scroll.
Bruk gjerne MsgBox funksjoner ofte når du feilsøke koden din. Bare pass på at du fjerner dem etter at du identifisere og løse problemet.
Sette Debug.Print uttalelser
Som et alternativ til å bruke MsgBox funksjoner i koden din, kan du sette inn en eller flere midlertidige Debug.Print uttalelser. Bruk disse uttalelsene for å skrive ut verdien av en eller flere variabler i vinduet som vises. Her er et eksempel som viser verdiene av tre variabler:
Debug.Print LoopIndex, CellCount, MyVal
Legg merke til at variablene er skilt med komma. Du kan vise så mange variabler som du vil med et enkelt Debug.Print uttalelse.
Debug.Print sender ut til Immediate vinduet selv om at vinduet er skjult. Hvis VBE umiddelbare vinduet ikke vises, trykker du Ctrl + G (eller velger Vis → Umiddelbar vindu). Her er noen effekt i det gjeldende vinduet., En Debug.Print uttalelse sender utgang til Immediate vinduet.
I motsetning MsgBox, Debug.Print uttalelser ikke stanse koden din. Så du trenger å holde et øye med det gjeldende vinduet for å se hva som skjer.
Etter at du har feilsøkt koden din, må du fjerne alle Debug.Print uttalelser. Selv store selskaper som Microsoft og til glemmer å fjerne sine Debug.Print uttalelser. I flere tidligere versjoner av Excel, hver gang Analyseverktøy-tillegget ble åpnet, ville du se flere merkelige meldinger i Immediate vinduet. Det problemet ble endelig løst i Excel 2007.
Bruke VBA debugger
Excel designere er nært kjent med begrepet bugs. Derfor Excel inneholder et sett med feilsøkingsverktøy som kan hjelpe deg riktige problemer i VBA-kode. Anmeldelser