Foutafhandeling in Excel VBA - Eenvoudige Excel-macro's

Inhoudsopgave

Hieronder zullen we kijken naar twee programma's in Excel VBA. Gewoon één programma negeert fouten. Het andere programma zet de uitvoering voort op een opgegeven regel bij het raken van een fout.

Situatie:

Beide programma's berekenen de vierkantswortel van getallen.

Vierkantswortel 1

Voeg de volgende coderegels toe aan de opdrachtknop 'Vierkante wortel 1'.

1. Eerst declareren we twee Range-objecten. We noemen de Range-objecten rng en cel.

Dim rng As Range, cel As Range

2. We initialiseren het Range-object rng met het geselecteerde bereik.

Stel rng = Selectie in

3. We willen de vierkantswortel van elke cel in een willekeurig geselecteerd bereik berekenen (dit bereik kan elke grootte hebben). In Excel VBA kunt u hiervoor de For Each Next-lus gebruiken. Voeg de volgende coderegels toe:

Voor elke cel In rng
Volgende cel

Opmerking: rng en cel worden hier willekeurig gekozen, u kunt alle namen gebruiken. Vergeet niet om naar deze namen te verwijzen in de rest van uw code.

4. Voeg de volgende coderegel toe aan de lus.

Bij fout Hervatten volgende

5. Vervolgens berekenen we de vierkantswortel van een waarde. In Excel VBA kunnen we hiervoor de Sqr-functie gebruiken. Voeg de volgende coderegel toe aan de lus.

cel.Waarde = Sqr(cel.Waarde)

6. Sluit de Visual Basic Editor af en test het programma.

Resultaat:

Conclusie: Excel VBA heeft cellen genegeerd die ongeldige waarden bevatten, zoals negatieve getallen en tekst. Zonder de instructie 'On Error Resume Next' te gebruiken, zou u twee fouten krijgen. Zorg ervoor dat u de instructie 'On Error Resume Next' alleen gebruikt als u zeker weet dat het negeren van fouten in orde is.

Vierkantswortel 2

Voeg de volgende coderegels toe aan de opdrachtknop 'Vierkante wortel 2'.

1. Hetzelfde programma als vierkantswortel 1, maar vervang 'On Error Resume Next' door:

Bij fout Ga naar ongeldige waarde:

Opmerking: InvalidValue wordt hier willekeurig gekozen, u kunt elke naam gebruiken. Vergeet niet om naar deze naam te verwijzen in de rest van uw code.

2. Voeg buiten de For Each Next-lus eerst de volgende coderegel toe:

Sluit sub

Zonder deze regel wordt de rest van de code (foutcode) uitgevoerd, zelfs als er geen fout is!

3. Excel VBA gaat door met de uitvoering vanaf de regel die begint met 'InvalidValue:' bij het tegenkomen van een fout (vergeet de dubbele punt niet). Voeg de volgende coderegel toe:

Ongeldige waarde:

4. We houden onze foutcode voorlopig eenvoudig. We tonen een MsgBox met wat tekst en het adres van de cel waar de fout is opgetreden.

MsgBox "kan vierkantswortel in cel niet berekenen" & cel.Adres

5. Voeg de volgende regel toe om Excel VBA de opdracht te geven de uitvoering te hervatten na het uitvoeren van de foutcode.

Volgende hervatten

6. Sluit de Visual Basic Editor af en test het programma.

Resultaat:

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave