Debugging Teknikker for Excel 2016 VBA

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.

  • Klikk på Avslutt-knappen. Execution stopper.
  • Klikk på Debug-knappen. VBE går inn i feilsøkingsmodus.
  • Klikk på Hjelp-knappen. En hjelpefunksjon forteller deg at du trykket Ctrl + Break. Med andre ord, det er ikke veldig nyttig.
    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