Typer av fel i VBA för Excel

Användare stöter ofta på olika typer av fel i VBA. Nedan erbjuder vi flera strategier för att hantera och lösa dem. Vi kommer att gå igenom tekniker som du kan använda för att förhöra din kod under testning, samt metoder för att fånga fel vid körning.

Typer av fel i VBA för Excel

Att testa och spåra olika typer av fel i VBA-kod kan vara tidskrävande och frustrerande. Det är inte ovanligt att höra programmerare Programmering Programmering är processen att skriva instruktioner för en dator att utföra. Det liknar ett recept för människor. Ett recept innehåller en lista över åtgärder som säger att mer än 30% av deras tid ägnas åt testning.

Med tiden blir du bättre på att undvika fel, men det är osannolikt att du någonsin kommer att skriva perfekt kod första gången. Genom att lära dig att undvika, hantera och spåra VBA-fel sparar du dig massor av tid i framtiden.

Typer av VBA-fel

För att göra det enklare har vi kategoriserat typerna av kodfel i tre grupper. För varje grupp utforskar vi några exempel och diskuterar sedan hur du kan undersöka och lösa dem.

1. Syntaxfel - En specifik kodrad är inte skriven korrekt

2. Kompilera fel - Problem som uppstår när du sätter ihop kodrader, även om de enskilda kodraderna verkar vara vettiga

3. Runtime-fel - När koden vanligtvis är korrekt i princip, men en åtgärd som vidtas av användaren eller de data som används leder till oväntade fel.

Vad är syntaxfel?

Syntaxfel är VBAs sätt att berätta om din kod är vettig, på de mest grundläggande nivåerna. Vi kan göra en enkel jämförelse med reglerna för att skriva en mening på engelska:

  • Ett ämne krävs.
  • Ett verb krävs.
  • En kapital brev krävs vid början.
  • Punktering krävs i slutet.
  • Objekt, adjektiv och andra grammatiska funktioner är valfria.

Jane hittade 18 fel i sin VBA-kod .

På liknande sätt inför VBA vissa regler för vad som krävs i vissa situationer. När du till exempel initierar ett grundläggande villkorligt IF-uttalande i din kod måste du replikera följande syntaxregler för den första raden i ett IF-uttalande;

  • Det måste börja med If
  • Nästa måste vara ett logiskt test , till exempel x> 10
  • Slutligen måste det sluta med ordet

Om NumberErrors> 20

Om du bryter mot ovanstående regler på engelska eller VBA, anses din grammatik (engelska) eller syntax (VBA) vara felaktig.

Hur man identifierar ett syntaxfel

VBA-redigeraren markerar syntaxfel i rött, så att du enkelt kan identifiera och lösa dem. Dessutom, om du försöker köra din kod eller starta en ny rad, får du syntaxfelmeddelandet nedan.

Grundläggande syntaxfel:

Grundläggande syntax erro

Felmeddelande ruta för syntax:

Syntax felmeddelande ruta

För att säkerställa att kontrollerna förekommer när du skriver, aktiverar du “Auto Syntax Check” i alternativmenyn.

Automatisk syntaxkontroll

Hur man löser syntaxfel

Syntaxfel representerar misstag i hur en specifik rad i din kod skrivs. De måste åtgärdas innan du kan köra din kod. Med erfarenhet är den röda texten allt du behöver för att upptäcka felet. Men om du fortfarande sitter fast, sök bara online efter “if statement syntax vba” eller vilken variant som passar dina behov, så hittar du många exempel på den specifika rad du försöker skriva.

Vad är kompileringsfel?

Kompilera fel hänvisar till en bredare grupp av VBA-fel, som inkluderar syntaxfel. Kompileringsfel identifierar också problem med din kod när de betraktas som en helhet. Syntaxen för varje enskild rad kan vara korrekt, men när de sätts ihop är det inte meningsfullt med raderna i din kod. Kompileringsfel markeras när du kompilerar eller kör din kod.

Hur man identifierar ett kompileringsfel

När du kör din VBA-kod presenteras kompileringsfel i en VBA-dialogruta enligt exemplen nedan.

Alternativt, om ditt projekt är långt eller komplext och involverar flera rutiner, kan det vara bra att kompilera din kod innan du kör den. Det förhindrar situationer där hälften av din kod körs framgångsrikt och sedan ett fel dyker upp. Du kan sammanställa din VBA-kod genom att klicka på Debug Menu → Compile VBA Project.

Exempel 1

Ett kompileringsfel för en saknad "End if" -del i ett IF-uttalande. Varje enskild rad i koden är korrekt, men tillsammans representerar de inte ett fullständigt IF-uttalande.

Kompileringsfel - Exempel 1

Exempel 2

I detta exempel har VBA-kompileringsprocessen upptäckt ett syntaxfel, markerat med rött. VBA anger att koden nedan saknar en stängningsfäste på funktionen.

Kompileringsfel - Exempel 2

Exempel 3

Kompileringsfel är vanliga när du använder Option Explicit och uppstår när en variabel inte har definierats uttryckligen. När Option Explicit är aktiverat krävs ett Dim-uttalande för att deklarera alla variabler innan de kan användas i din kod.

Kompileringsfel - Exempel 3

Hur man löser kompileringsfel

VBA-kompileringsfel förhindrar att berörda rutiner körs. Tills du fixar dem kan din kod inte tolkas korrekt av VBA. Felmeddelandefältet ger ofta mer användbara råd än med syntaxfel.

Om det inte är direkt uppenbart för dig vad problemet är från felmeddelandet, försök att använda Microsofts hjälpcenter för att få en uppfattning om exakt hur ditt uttalande eller funktion ska skrivas. Här är ett exempel på felmeddelandet "Blockera om utan slut om" på Microsofts webbplats.

Blockera om utan slut om

Vad är Runtime-fel?

När du har fixat syntaxfel och kompilerat fel är du redo att börja testa eller köra koden ordentligt för att se hur bra den utför dina önskade åtgärder eller beräkningar. Vi kallar testperioden, eller live-körning av koden, "runtime."

Runtime-fel kan inte upptäckas genom att bara titta på koden. de är ett resultat av att din kod interagerar med specifika ingångar eller data vid den tiden.

Runtime-fel orsakas ofta av oväntade data som skickas till VBA-koden, felaktiga datatyper, dividerat med oväntade nollor och att definierade cellområden inte är tillgängliga. Runtime-fel är också de mest varierande och komplexa att spåra och fixa.

Hur man identifierar Runtime-fel

VBA Debug VBA: Så här felsöker du kod När du skriver och kör VBA-kod är det viktigt för användaren att lära sig felsöka kodfel. Det förväntas av Excel-användaren att kodfunktionen belyser problemkoden i gult och ger oss en liten aning om vad som orsakar problemet.

Exempel 1

Medan koden nedan helt enkelt delar ett nummer med det andra, finns det några fall där det inte kommer att vara möjligt. Till exempel, om cell A1 = 2 och cell A2 = 0, är ​​det inte möjligt att dela med noll. Rutfelrutan innehåller en felsökningsknapp som belyser problemkoden.

Runtime Error - Exempel 1

Runtime-fel - Exempel 1a

Exempel 2

I det här exemplet skapade jag en matris för att samla namnen på n företag i mitt kalkylblad. Jag försökte sedan hänvisa till det sjätte föremålet, som kanske eller inte existerar vid körning. VBA presenterar ett runtime-felmeddelande och låter mig trycka på Debug för att undersöka problemet.

Runtime Error - Exempel 2

När jag har tryckt på Debug framhäver VBA raden kod som orsakar problemet. Nu är det upp till mig att använda meddelandet "Subscript out of range" för att ta reda på vad som går fel. Subskriptfelet utanför räckvidden betyder i allmänhet att din kod är bra i princip, men att det specifika objektet du letar efter inte kan hittas. Vanligtvis kommer det att hända när man refererar till celler eller intervall i Excel, liksom matriser i din VBA-kod.

Runtime Error - Exempel 2a

För att säkerställa att felsökningsfunktionen är aktiverad, i menyn Alternativ> Allmänt> Felavskiljning, bör standardläget vara "Bryt om obehandlade fel." Lämna alternativet markerat.

Bryt mot obehandlade fel

Hur löser du körtidsfel

Eftersom runtime-fel är varierande och komplexa till sin natur varierar också lösningarna. De två allmänna metoderna för att minska runtime-fel är:

Fel vid fällning

Det är en bra idé att fundera över vilka möjliga scenarier din kod kan stöta på. Ännu bättre är att testa din kod på övningsdata eller med riktiga användare. Det gör att du kan känna igen sådana scenarier i din VBA, med kodförgrening till olika resultat, beroende på om det finns fel.

Exempel 1

Här tvingar raden 'On Error Resume Next' koden att fortsätta, även om ett fel upptäcks. Vi använder sedan testet If Err> 0 för att skapa ett varningsmeddelande, bara om felet existerar. 'On Error Goto 0' återställer VBA till standardläget.

Felfällning - Exempel 1

Exempel 2

Här beräknar koden inkomst per dag baserat på en månadsinkomst och ett definierat antal dagar. Om antalet dagar inte anges hoppar vi över till en definierad punkt i vår kod som heter ”NoDaysInMonthProvided :,” där vi använder det genomsnittliga antalet dagar i en månad som ett basantagande. Även om det är förenklat, visar det tydligt hur man kan fånga ett fel och hoppa till en annan punkt i din kod.

Felfällning - Exempel 2

Rensa användarinstruktioner

Tydlig dokumentation och kalkylbladetiketter säkerställer att dina användare interagerar med din modell på det sätt du tänkt dig. Det hjälper till att förhindra dem när du matar in text istället för siffror eller lämnar nollor som senare kan påverka din kod.

Sammanfattning

Det finns tre viktiga typer av fel i VBA som kan påverka din kod på olika sätt. Det är viktigt att aktivera VBA: s felavkänningsalternativ, till exempel felsökare och automatisk syntaxkontroll. De hjälper dig att fastställa felens placering och karaktär.

Fler resurser

Finance är den officiella leverantören av den globala Certified Banking & Credit Analyst (CBCA) ™ CBCA ™ Certification Certified Banking & Credit Analyst (CBCA) ™ ackreditering är en global standard för kreditanalytiker som täcker finans, redovisning, kreditanalys, kassaflödesanalys , förbundsmodellering, återbetalning av lån och mer. certifieringsprogram, utformat för att hjälpa vem som helst att bli en ekonomisk analytiker i världsklass. För att fortsätta din karriär kommer de ytterligare resurserna nedan att vara användbara:

  • #REF Excel-fel #REF Excel-fel #REF Excel-fel orsakar stora problem i kalkylark. Lär dig hur du hittar och fixar #REF-fel i Excel i den här snabbhandledningen med exempel och skärmdumpar. EN #REF! fel ("ref" står för referens) är meddelandet Excel visar när en formel refererar till en cell som inte längre existerar, orsakad av att ta bort celler som
  • Excel VBA-exempel Excel VBA-exempel Excel VBA gör det möjligt för användaren att skapa makron som automatiserar processer i Excel. Den här guiden använder Excel VBA-exempel för att visa hur man spelar in ett makro genom att ställa in makrot, hur man deklarerar variabler och hur man refererar till data.
  • Tips för att skriva VBA i Excel Tips för att skriva VBA i Excel Nedan listas nio tips för att skriva VBA i Excel. VBA för Excel introducerar otaliga möjligheter för anpassade beräkningar och automatisering.
  • VBA-metoder VBA-metoder En VBA-metod är en kod kod kopplad till ett VBA-objekt, variabel eller datareferens som berättar för Excel vilken åtgärd som ska utföras i förhållande till det objektet. Kopiering, klistra in och välja är bara några exempel på VBA-metoder som kan utföras.

Rekommenderas

Stängdes Crackstreams ner?
2022
Är MC ledningscentral säker?
2022
Lämnar Taliesin en kritisk roll?
2022