Soorten fouten in VBA voor Excel

Gebruikers zullen vaak verschillende soorten fouten tegenkomen in VBA. Hieronder bieden we verschillende strategieën om ze aan te pakken en op te lossen. We zullen technieken doorlopen die u kunt gebruiken om uw code tijdens het testen te ondervragen, evenals methoden om fouten tijdens runtime op te sporen.

Soorten fouten in VBA voor Excel

Het testen en opsporen van verschillende soorten fouten in VBA-code kan tijdrovend en frustrerend zijn. Het is niet ongebruikelijk om programmeurs te horen Programmeren Programmeren is het proces van het schrijven van instructies die een computer moet uitvoeren. Het lijkt op een recept voor mensen. Een recept bevat een lijst met acties die zeggen dat ruim 30% van hun tijd wordt besteed aan testen.

Na verloop van tijd wordt u beter in het vermijden van fouten, maar het is onwaarschijnlijk dat u de eerste keer ooit perfecte code zult schrijven. Door te leren hoe u VBA-fouten kunt vermijden, aanpakken en opsporen, bespaart u uzelf in de toekomst een hoop tijd.

Soorten VBA-fouten

Om het u gemakkelijk te maken, hebben we de soorten coderingsfouten in drie groepen onderverdeeld. Voor elke groep zullen we enkele voorbeelden onderzoeken en vervolgens bespreken hoe u ze zou kunnen onderzoeken en oplossen.

1. Syntaxisfouten - Een specifieke regel code is niet correct geschreven

2. Compileerfouten - Problemen die optreden bij het samenstellen van regels code, hoewel de afzonderlijke regels code logisch lijken

3. Runtime-fouten - Wanneer de code meestal in principe correct is, maar een actie van de gebruiker of de gebruikte data leidt tot onverwachte fouten.

Wat zijn syntaxisfouten?

Syntaxisfouten zijn de manier waarop VBA u vertelt of uw code zinvol is, op de meest elementaire niveaus. We kunnen een eenvoudige vergelijking maken met de regels voor het schrijven van een zin in het Engels:

  • Een onderwerp is vereist.
  • Een werkwoord is vereist.
  • Aan het begin is een hoofdletter vereist.
  • Aan het einde is interpunctie vereist.
  • Objecten, bijvoeglijke naamwoorden en andere grammaticale kenmerken zijn optioneel.

Jane vond 18 fouten in haar VBA-code .

Op een vergelijkbare manier legt VBA bepaalde regels op over wat in bepaalde situaties nodig is. Als u bijvoorbeeld een basisvoorwaardelijke IF-instructie in uw code start, moet u de volgende syntaxisregels repliceren voor de eerste regel van een IF-instructie;

  • Het moet beginnen met If
  • De volgende moet een logische test zijn , zoals x> 10
  • Ten slotte moet het eindigen met het woord dan

Als NumberErrors> 20 dan

Als u de bovenstaande regels van het Engels of VBA overtreedt, wordt uw grammatica (Engels) of syntaxis (VBA) als onjuist beschouwd.

Hoe u een syntaxisfout kunt identificeren

De VBA-editor markeert syntaxisfouten in rood, zodat u ze gemakkelijk kunt identificeren en oplossen. Als u bovendien uw code probeert uit te voeren of een nieuwe regel begint, krijgt u de onderstaande syntaxisfoutmelding te zien.

Basissyntaxisfout:

Basic syntaxis erro

Syntaxisfoutberichtvenster:

Syntaxisfoutberichtvenster

Om er zeker van te zijn dat de controles plaatsvinden terwijl u typt, schakelt u de "Automatische syntaxiscontrole" in het menu Opties in.

Automatische syntaxiscontrole

Syntaxisfouten oplossen

Syntaxisfouten vertegenwoordigen fouten in de manier waarop een specifieke regel van uw code is geschreven. Ze moeten worden opgelost voordat u uw code kunt uitvoeren. Met ervaring is de rode tekst alles wat u nodig hebt om de fout op te sporen. Maar als je nog steeds vastzit, zoek dan gewoon online naar "if statement syntax vba" of welke variant dan ook die bij je past, en je zult tal van voorbeelden vinden van de specifieke regel die je probeert te schrijven.

Wat zijn compileerfouten?

Compilatiefouten verwijzen naar een grotere groep VBA-fouten, waaronder syntaxisfouten. Compilatiefouten identificeren ook problemen met uw code als geheel beschouwd. De syntaxis van elke afzonderlijke regel kan correct zijn, maar wanneer ze worden samengevoegd, hebben de regels van uw code geen zin. Compileerfouten worden gemarkeerd wanneer u uw code compileert of uitvoert.

Hoe u een compilatiefout kunt identificeren

Wanneer u uw VBA-code uitvoert, worden compilatiefouten weergegeven in een VBA-dialoogvenster volgens de onderstaande voorbeelden.

Als uw project echter lang of complex is en meerdere routines omvat, kan het nuttig zijn om uw code te compileren voordat u deze uitvoert. Het voorkomt situaties waarin de helft van uw code met succes wordt uitgevoerd en er vervolgens een foutmelding verschijnt. U kunt uw VBA-code compileren door te klikken op Foutopsporingsmenu → VBA-project compileren.

voorbeeld 1

Een compileerfout voor een ontbrekend "End if" -gedeelte van een IF-instructie. Elke afzonderlijke regel in de code is correct, maar samen vertegenwoordigen ze geen volledige IF-instructie.

Compileerfout - Voorbeeld 1

Voorbeeld 2

In dit voorbeeld heeft het VBA-compileerproces een syntaxisfout gedetecteerd, rood gemarkeerd. VBA geeft aan dat de onderstaande code een afsluitende haakje mist op de functie.

Compileerfout - Voorbeeld 2

Voorbeeld 3

Compilatiefouten komen vaak voor bij het gebruik van Option Explicit en treden op als een variabele niet expliciet is gedefinieerd. Als Option Explicit is geactiveerd, is een Dim-instructie vereist om alle variabelen te declareren voordat ze in uw code kunnen worden gebruikt.

Compileerfout - Voorbeeld 3

Compileerfouten oplossen

VBA-compilatiefouten voorkomen dat de getroffen routines worden uitgevoerd. Totdat u ze hebt opgelost, kan uw code niet correct worden geïnterpreteerd door VBA. De foutmeldingsvensters bieden vaak nuttiger advies dan bij syntaxisfouten.

Als het u niet meteen duidelijk is wat het probleem is door de foutmelding, probeer dan het Helpcentrum van Microsoft om een ​​idee te krijgen van hoe uw verklaring of functie precies moet worden geschreven. Hier is een voorbeeld van de foutmelding 'Blokkeren als zonder einde als' op de Microsoft-website.

Blokkeer als zonder einde als

Wat zijn runtime-fouten?

Zodra u syntaxisfouten en compilatiefouten heeft opgelost, bent u klaar om te beginnen met testen of uw code correct uit te voeren om te zien hoe goed deze de gewenste acties of berekeningen uitvoert. We noemen de testperiode, of het live uitvoeren van code, 'runtime'.

Runtimefouten kunnen niet worden gedetecteerd door simpelweg naar de code te kijken; ze zijn het resultaat van de interactie van uw code met de specifieke invoer of gegevens op dat moment.

Runtimefouten worden vaak veroorzaakt doordat onverwachte gegevens worden doorgegeven aan de VBA-code, niet-overeenkomende gegevenstypen, delen door onverwachte nullen en gedefinieerde celbereiken die niet beschikbaar zijn. Runtimefouten zijn ook het meest gevarieerd en complex om op te sporen en op te lossen.

Hoe runtime-fouten te identificeren

De VBA-foutopsporing VBA: foutopsporing in code Bij het schrijven en uitvoeren van VBA-code is het belangrijk dat de gebruiker leert hoe hij codefouten kan opsporen. Het is de verwachting van de Excel-gebruiker dat de codefunctie de probleemcode geel markeert en ons een kleine aanwijzing geeft over wat het probleem veroorzaakt.

voorbeeld 1

Hoewel de onderstaande code simpelweg het ene getal door het andere deelt, zijn er enkele gevallen waarin dit niet mogelijk is. Als cel A1 = 2 en cel A2 = 0, is het bijvoorbeeld niet mogelijk om door nul te delen. Het runtime-foutvenster bevat een foutopsporingsknop die de probleemcode markeert.

Runtime-fout - Voorbeeld 1

Runtime-fouten - Voorbeeld 1a

Voorbeeld 2

In dit voorbeeld heb ik een array gemaakt om de namen van n bedrijven in mijn werkblad te verzamelen. Ik probeerde toen te verwijzen naar het zesde item, dat al dan niet tijdens runtime bestaat. VBA geeft een runtime-foutmelding en stelt me ​​in staat om op Debug te drukken om het probleem te onderzoeken.

Runtime-fout - Voorbeeld 2

Zodra ik op Debug druk, markeert VBA de regel code die het probleem veroorzaakt. Nu is het aan mij om het bericht "Abonnement buiten bereik" te gebruiken om erachter te komen wat er misgaat. De subscript buiten bereik-fout betekent over het algemeen dat uw code in principe goed is, maar dat het specifieke item dat u zoekt niet kan worden gevonden. Meestal gebeurt dit bij het verwijzen naar cellen of bereiken in Excel, evenals naar arrays in uw VBA-code.

Runtime-fout - Voorbeeld 2a

Om er zeker van te zijn dat de foutopsporingsfunctie is ingeschakeld, moet in het menu Opties> Algemeen> Foutopsporing de standaardstatus "Onderbreken bij onverwerkte fouten" zijn. Laat de optie aangevinkt.

Breek op onverwerkte fouten

Runtime-fouten oplossen

Omdat runtime-fouten gevarieerd en complex van aard zijn, zijn de oplossingen ook gevarieerd. De twee algemene methoden om runtimefouten te verminderen zijn:

Foutopsporing

Het is een goed idee om na te denken over de mogelijke scenario's die uw code kan tegenkomen. Nog beter is het testen van uw code op praktijkgegevens of met echte gebruikers. Hiermee kunt u dergelijke scenario's in uw VBA herkennen, waarbij code zich vertakt naar verschillende uitkomsten, afhankelijk van of er fouten zijn.

voorbeeld 1

Hier dwingt de regel 'On Error Resume Next' de code door te gaan, zelfs als er een fout wordt gedetecteerd. We gebruiken vervolgens de If Err> 0-test om een ​​waarschuwingsbericht te maken, alleen als de fout bestaat. De 'On Error Goto 0' reset VBA naar de standaardstatus.

Foutopsporing - Voorbeeld 1

Voorbeeld 2

Hier berekent de code het inkomen per dag, op basis van een maandelijks inkomen en een bepaald aantal dagen. Als het aantal dagen niet wordt opgegeven, gaan we naar een bepaald punt in onze code genaamd "NoDaysInMonthProvided :," waar we het gemiddelde aantal dagen in een maand als uitgangspunt nemen. Hoewel het simplistisch is, laat het duidelijk zien hoe u een fout kunt vangen en naar een ander punt in uw code kunt springen.

Foutopsporing - Voorbeeld 2

Duidelijke gebruikersinstructies

Duidelijke documentatie en werkbladlabels zorgen ervoor dat uw gebruikers met uw model omgaan op de manier die u voor ogen had. Het zal ze helpen voorkomen bij het invoeren van tekst, in plaats van cijfers, of het achterlaten van nullen die later van invloed kunnen zijn op uw code.

Overzicht

Er zijn drie belangrijke soorten fouten in VBA die uw code op verschillende manieren kunnen beïnvloeden. Het is belangrijk om de foutdetectie-opties van VBA te activeren, zoals de debugger en automatische syntaxiscontrole. Zij helpen u de locatie en aard van de fouten vast te stellen.

Meer middelen

Finance is de officiële aanbieder van de wereldwijde Certified Banking & Credit Analyst (CBCA) ™ CBCA ™ -certificering De Certified Banking & Credit Analyst (CBCA) ™ -accreditatie is een wereldwijde standaard voor kredietanalisten die betrekking heeft op financiën, boekhouding, kredietanalyse en cashflowanalyse , convenantmodellering, terugbetalingen van leningen en meer. certificeringsprogramma, ontworpen om iedereen te helpen een financiële analist van wereldklasse te worden. Om uw carrière verder te ontwikkelen, zijn de onderstaande aanvullende bronnen nuttig:

  • #REF Excel-fouten #REF Excel-fouten #REF Excel-fouten veroorzaken grote problemen in spreadsheets. Leer hoe u #REF-fouten in Excel kunt vinden en oplossen in deze korte handleiding met voorbeelden en schermafbeeldingen. EEN #REF! fout (de "ref" staat voor reference) is het bericht dat Excel weergeeft wanneer een formule verwijst naar een cel die niet meer bestaat, veroorzaakt door het verwijderen van cellen die
  • Excel VBA Voorbeelden Excel VBA Voorbeelden Met Excel VBA kan de gebruiker macro's maken die processen binnen Excel automatiseren. In deze handleiding worden Excel VBA-voorbeelden gebruikt om te laten zien hoe u een macro opneemt door de macro in te stellen, hoe u variabelen declareert en hoe u naar gegevens verwijst.
  • Tips voor het schrijven van VBA in Excel Tips voor het schrijven van VBA in Excel Hieronder vindt u negen tips voor het schrijven van VBA in Excel. VBA voor Excel introduceert talloze mogelijkheden voor berekeningen op maat en automatisering.
  • VBA-methoden VBA-methoden Een VBA-methode is een stukje code dat is gekoppeld aan een VBA-object, variabele of gegevensverwijzing die Excel vertelt welke actie moet worden uitgevoerd met betrekking tot dat object. Kopiëren, plakken en selecteren zijn slechts enkele voorbeelden van VBA-methoden die kunnen worden uitgevoerd.

Aanbevolen

Is Crackstreams afgesloten?
2022
Is het MC-commandocentrum veilig?
2022
Verlaat Taliesin een cruciale rol?
2022