Typer af fejl i VBA til Excel - Liste og eksempler

Brugere vil ofte støde på forskellige typer fejl i VBA. Nedenfor tilbyder vi flere strategier til håndtering og løsning af dem. Vi gennemgår teknikker, du kan bruge til at forhøre din kode under test, samt metoder til at fange fejl ved kørsel.

Typer af fejl i VBA til Excel

Test og sporing af forskellige typer fejl i VBA-kode kan være tidskrævende og frustrerende. Det er ikke ualmindeligt at høre programmører Programmering Programmering er processen med at skrive instruktioner til en computer at udføre. Det ligner en opskrift på mennesker. En opskrift indeholder en liste over handlinger, der siger, at godt over 30% af deres tid bruges på test.

Over tid bliver du bedre til at undgå fejl, men det er usandsynligt, at du nogensinde skriver perfekt kode første gang. Ved at lære at undgå, håndtere og spore VBA-fejl sparer du dig masser af tid i fremtiden.

Typer af VBA-fejl

For at gøre tingene lettere har vi kategoriseret typerne af kodningsfejl i tre grupper. For hver gruppe udforsker vi nogle eksempler og drøfter derefter, hvordan du kan undersøge og løse dem.

1. Syntaksfejl - En bestemt kodelinje er ikke skrevet korrekt

2. Kompilér fejl - Problemer, der opstår, når kodelinjer sammensættes, selvom de enkelte kodelinjer ser ud til at give mening

3. Kørselsfejl - Når koden normalt er korrekt i princippet, men en handling udført af brugeren eller de anvendte data fører til uventede fejl.

Hvad er syntaksfejl?

Syntaksfejl er VBAs måde at fortælle dig, om din kode giver mening, på de mest basale niveauer. Vi kan lave en simpel sammenligning med reglerne for at skrive en sætning på engelsk:

  • Et emne er påkrævet.
  • Der kræves et verbum .
  • Et stort bogstav kræves i starten.
  • Tegnsætning er påkrævet i slutningen.
  • Objekter, adjektiver og andre grammatiske funktioner er valgfri.

Jane fandt 18 fejl i sin VBA-kode .

På samme måde pålægger VBA visse regler for, hvad der kræves i visse situationer. For eksempel, når du starter en grundlæggende betinget IF-sætning i din kode, skal du replikere følgende syntaksregler for den første linje i en IF-sætning;

  • Det skal begynde med If
  • Næste skal være en logisk test , såsom x> 10
  • Endelig skal det slutte med ordet dengang

Hvis NumberErrors> 20

Hvis du bryder ovenstående regler på engelsk eller VBA, betragtes din grammatik (engelsk) eller syntaks (VBA) som forkert.

Sådan identificeres en syntaksfejl

VBA-editoren fremhæver syntaksfejl i rødt, så du nemt kan identificere og løse dem. Derudover, hvis du forsøger at køre din kode eller starte en ny linje, får du syntaksfejlmeddelelsen nedenfor.

Grundlæggende syntaksfejl:

Grundlæggende syntaks erro

Syntaksfejlmeddelelsesfelt:

Syntaksfejlmeddelelsesboks

For at sikre, at kontrollerne finder sted, mens du skriver, skal du aktivere "Automatisk syntakscheck" i menuen Indstillinger.

Automatisk kontrol af syntaks

Sådan løses syntaksfejl

Syntaksfejl repræsenterer fejl i den måde, en bestemt linje i din kode skrives på. De skal rettes, før du kan køre din kode. Med erfaring vil den røde tekst være alt hvad du behøver for at få øje på fejlen. Men hvis du stadig sidder fast, skal du bare søge online efter “if statement syntax vba” eller hvilken variant der passer til dine behov, og du finder masser af eksempler på den specifikke linje, du prøver at skrive.

Hvad er kompileringsfejl?

Kompileringsfejl henviser til en bredere gruppe af VBA-fejl, der inkluderer syntaksfejl. Kompileringsfejl identificerer også problemer med din kode, når de betragtes som en helhed. Syntaksen for hver enkelt linje kan være korrekt, men når den er sat sammen, giver linjerne i din kode ikke mening. Kompileringsfejl fremhæves, når du kompilerer eller kører din kode.

Sådan identificeres en kompileringsfejl

Når du kører din VBA-kode, vises kompileringsfejl i en VBA-dialogboks som i eksemplerne nedenfor.

Alternativt, hvis dit projekt er langt eller komplekst og involverer flere rutiner, kan det være nyttigt at kompilere din kode, før du kører det. Det forhindrer situationer, hvor halvdelen af ​​din kode kører med succes, og derefter dukker en fejl op. Du kan kompilere din VBA-kode ved at klikke på Debug Menu → Compile VBA Project.

Eksempel 1

En kompileringsfejl for en manglende "Afslut hvis" del af en IF-sætning. Hver enkelt linje i koden er korrekt, men sammen repræsenterer de ikke en komplet IF-sætning.

Kompileringsfejl - Eksempel 1

Eksempel 2

I dette eksempel har VBA-kompileringsprocessen registreret en syntaksfejl, fremhævet med rødt. VBA indikerer, at nedenstående kode mangler en lukkende parentes på funktionen.

Kompileringsfejl - Eksempel 2

Eksempel 3

Kompileringsfejl er almindelige, når du bruger Option Explicit og forekommer, når en variabel ikke er defineret eksplicit. Når Option Explicit er aktiveret, kræves en Dim-sætning for at deklarere alle variabler, før de kan bruges i din kode.

Kompileringsfejl - Eksempel 3

Sådan løses kompileringsfejl

VBA-kompileringsfejl forhindrer, at berørte rutiner kører. Før du løser dem, kan din kode ikke fortolkes korrekt af VBA. Fejlmeddelelsesfelterne giver ofte mere nyttig rådgivning end med syntaksfejl.

Hvis det ikke umiddelbart er indlysende for dig, hvad problemet er fra fejlmeddelelsen, så prøv at bruge Microsofts Hjælp til at få en idé om, hvordan din erklæring eller funktion skal skrives. Her er et eksempel på fejlmeddelelsen "Bloker hvis uden ende hvis" på Microsofts websted.

Bloker, hvis uden ende, hvis

Hvad er kørselsfejl?

Når du har rettet syntaksfejl og kompileringsfejl, er du klar til at begynde at teste eller køre din kode ordentligt for at se, hvor godt den udfører dine ønskede handlinger eller beregninger. Vi kalder testperioden eller live udførelse af koden "runtime".

Runtime-fejl kan ikke detekteres ved blot at se på koden; de er et resultat af, at din kode interagerer med de specifikke input eller data på det tidspunkt.

Kørselsfejl er ofte forårsaget af uventede data, der sendes til VBA-koden, uoverensstemmende datatyper, divideret med uventede nuller, og definerede celleområder er ikke tilgængelige. Kørselsfejl er også de mest varierede og komplekse at spore og rette.

Sådan identificeres kørselsfejl

VBA Debug VBA: Sådan debugges kode Når du skriver og kører VBA-kode, er det vigtigt for brugeren at lære, hvordan man debugger kodefejl. Det er forventningen fra Excel-brugeren, at kodefunktionen fremhæver problemkoden i gult og giver os en lille anelse om, hvad der forårsager problemet.

Eksempel 1

Mens koden nedenfor blot deler et tal med det andet, er der nogle tilfælde, hvor det ikke er muligt. For eksempel, hvis celle A1 = 2 og celle A2 = 0, er det ikke muligt at dividere med nul. Kørselsfejlfeltet indeholder en fejlretningsknap, der fremhæver problemkoden.

Runtime Error - Eksempel 1

Kørselsfejl - Eksempel 1a

Eksempel 2

I dette eksempel oprettede jeg en matrix til at indsamle navnene på n virksomheder i mit regneark. Jeg forsøgte derefter at henvise til det sjette emne, som måske eller måske ikke eksisterer på kørselstidspunktet. VBA præsenterer en runtime-fejlmeddelelse og giver mig mulighed for at trykke på Debug for at undersøge problemet.

Runtime Error - Eksempel 2

Når jeg trykker på Debug, fremhæver VBA den kodelinje, der forårsager problemet. Nu er det op til mig at bruge meddelelsen "Abonnement uden for rækkevidde" til at finde ud af, hvad der går galt. Abonnementsfejlen uden for rækkevidde betyder generelt, at din kode i princippet er god, men at den specifikke vare, du leder efter, ikke kan findes. Mest almindeligt sker det, når der henvises til celler eller områder i Excel såvel som arrays i din VBA-kode.

Runtime Error - Eksempel 2a

For at sikre, at fejlfindingsfunktionen er aktiveret, skal menuen Indstillinger> Generelt> Fejlfældning være standardtilstanden "Break on Unhandled Errors." Lad indstillingen være markeret.

Brud på uhåndterede fejl

Sådan løses kørselsfejl

Da runtime-fejl er varierede og komplekse, varierer løsningerne også. De to generelle metoder til at reducere runtime-fejl er:

Fejlfældning

Det er en god ide at tænke over, hvilke mulige scenarier din kode kan støde på. Endnu bedre er at teste din kode på praksisdata eller med rigtige brugere. Det giver dig mulighed for at genkende sådanne scenarier i din VBA med kodeforgrening i forskellige resultater afhængigt af, om der findes fejl.

Eksempel 1

Her tvinger linjen 'On Error Resume Next' koden til at fortsætte, selvom der opdages en fejl. Vi bruger derefter testen Hvis der er fejl> 0 til at oprette en advarselsmeddelelse, kun hvis fejlen findes. 'On Error Goto 0' nulstiller VBA til sin standardtilstand.

Fejlfældning - Eksempel 1

Eksempel 2

Her beregner koden indkomst pr. Dag baseret på en månedlig indkomst og et defineret antal dage. Hvis antallet af dage ikke er angivet, springer vi til et defineret punkt i vores kode kaldet “NoDaysInMonthProvided :,” hvor vi bruger det gennemsnitlige antal dage i en måned som en basisantagelse. Selvom det er forenklet, viser det tydeligt, hvordan man fælder en fejl og springer til et andet punkt i din kode.

Fejlfældning - Eksempel 2

Ryd brugervejledningen

Tydelig dokumentation og regnearkmærker vil sikre, at dine brugere interagerer med din model på den måde, du havde tænkt dig. Det hjælper med at forhindre dem, når du indtaster tekst i stedet for tal eller efterlader nuller, der senere kan påvirke din kode.

Resumé

Der er tre nøgletyper af fejl i VBA, der kan påvirke din kode på forskellige måder. Det er vigtigt at aktivere VBAs fejldetekteringsindstillinger, såsom fejlfinding og automatisk syntaks kontrol. De hjælper dig med at fastslå placeringen og arten af ​​fejlene.

Flere ressourcer

Finance er den officielle udbyder af den globale Certified Banking & Credit Analyst (CBCA) ™ CBCA ™ -certificering Certified Banking & Credit Analyst (CBCA) ™ -akkreditering er en global standard for kreditanalytikere, der dækker finansiering, regnskab, kreditanalyse, cash flow-analyse , modellering af pagter, tilbagebetaling af lån og mere. certificeringsprogram designet til at hjælpe alle med at blive en finansanalytiker i verdensklasse. For at fortsætte din karriere vil de yderligere ressourcer nedenfor være nyttige:

  • #REF Excel-fejl #REF Excel-fejl #REF Excel-fejl forårsager store problemer i regneark. Lær hvordan du finder og retter #REF-fejl i Excel i denne hurtige vejledning med eksempler og skærmbilleder. EN #REF! fejl ("ref" står for reference) er meddelelsen, som Excel viser, når en formel henviser til en celle, der ikke længere eksisterer, forårsaget af sletning af celler, der
  • Excel VBA-eksempler Excel VBA-eksempler Excel VBA giver brugeren mulighed for at oprette makroer, der automatiserer processer i Excel. Denne vejledning bruger Excel VBA-eksempler til at vise, hvordan man registrerer en makro ved at opsætte makroen, hvordan man deklarerer variabler, og hvordan man henviser til data.
  • Tips til at skrive VBA i Excel Tips til at skrive VBA i Excel Nedenfor er ni tip til at skrive VBA i Excel. VBA til Excel introducerer utallige muligheder for brugerdefinerede beregninger og automatisering.
  • VBA-metoder VBA-metoder En VBA-metode er et stykke kode, der er knyttet til et VBA-objekt, en variabel eller en datareference, der fortæller Excel, hvilken handling der skal udføres i forhold til det objekt. Kopiering, indsættelse og valg er blot nogle eksempler på VBA-metoder, der kan udføres.