VBA bij fout - Hoe VBA On Error Statement in Excel te gebruiken?

Inhoudsopgave:

Anonim

VBA bij fout

VBA On Error is een eenvoudige methode voor het verwerken van onverwachte uitzonderingen in Excel-macro's. Het is bekend dat we geen code kunnen schrijven zonder fouten. Soms kan het schrijven van grote code ons de fout geven, zelfs tijdens het compileren. Om dit soort situaties te voorkomen, voegen we Error Message toe. In plaats van ons het juiste antwoord of de juiste foutcode te geven, wordt het bericht met de foutcode weergegeven. Dat lijkt erop dat we de uitvoer van onze berekening hebben gekregen, maar het is de foutcode die wordt afgedrukt.

Hoe Excel VBA op foutmelding in Excel te gebruiken?

Er zijn 3 manieren van fout in VBA. Laten we verschillende manieren begrijpen met enkele voorbeelden.

Voorbeeld 1

Het eerste fouttype is een codefilteringsfout die optreedt wanneer een code niet-aangegeven of onmogelijke variabelen is. Om meer te begrijpen zullen we een eenvoudige wiskundige uitdrukking van de kloof gebruiken. Ga hiervoor naar het menu Invoegen van VBA en selecteer Module zoals hieronder weergegeven.

Open nu Subcategorie en voeg een naam toe. Omdat we On Error gebruiken, hebben we hetzelfde genoemd.

 Sub OnError () Einde Sub 

Definieer nu 2 of 3 gehele getallen. Hier nemen we X en Y als gehele getallen.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal Einde Sub 

Zoals hierboven besproken zullen we de wiskundige uitdrukking van de deling berekenen. Voor X zullen we een karakter in Numerator plaatsen en 0 delen. En Y zal 20/2 zijn, wat volledige getallen is.

 Sub OnError () Dim X als geheel getal, Y als geheel getal X = test / 0 Y = 20/2 End Sub 

Voer nu de code uit met behulp van de F5-toets of klik op de afspeelknop zoals hieronder wordt weergegeven. We krijgen Runtime-fout 6, die de fout Tekst over nummer toont.

Om deze fout te negeren, voegen we één regel toe aan Fout Hervatten Volgende voordat we de wiskundige code schrijven. Het springt naar de foutcode, maar we kunnen de uitkomst van de tweede wiskundige code niet zien. Dit verbergt alleen het foutbericht als verschillende coderegels zoals hieronder worden weergegeven. Probeer nu ook de code uit te voeren.

 Sub OnError () Dim X als geheel getal, Y als geheel getal bij fout Hervatten Volgende X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Om deze fout te negeren, voegen we één regel toe aan Fout Hervatten Volgende voordat we de wiskundige code schrijven. Het springt naar de foutcode, maar we kunnen de uitkomst van de tweede wiskundige code niet zien. Dit verbergt alleen het foutbericht als verschillende coderegels zoals hieronder worden weergegeven. Probeer nu ook de code uit te voeren.

Voorbeeld 2

In dit voorbeeld zullen we rekening houden met die wiskundige verdeling die oneindig resultaat geeft, maar bij codering zal het # DIV / 0 resulteren. Om dit aan te tonen zullen we nog een geheel getal Z overwegen, samen met X en Y in subcategorie, zoals hieronder getoond.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal Einde Sub 

Kader nu alle gehele getallen X, Y en Z in met een wiskundige uitdrukking van delen en om deze af te drukken, gebruikt u de MsgBox-functie in VBA van het resultaat van elke gehele getallen.

Hieronder voor Integer X hebben we 10 gedeeld door 0, 20 door 2 en 30 door 4.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Voer nu de code uit met behulp van de F5-toets of handmatig zoals hieronder wordt getoond.

Zoals we kunnen zien in de bovenstaande schermafbeelding Runtime-fout 11, wat betekent dat de fout gerelateerd is aan het nummer. Nu om dit te overwinnen, voeg een regel toe On Error Resume Next vóór wiskundige uitdrukking zoals hieronder getoond.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal bij fout Hervatten Volgende X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Als we nu de code uitvoeren, krijgen we nul voor het eerste gehele getal X en voor Y en Z krijgen we respectieve divisie-antwoorden zoals hieronder weergegeven.

Voorbeeld 3

Het tweede type fout wordt zichtbaar wanneer we onjuiste gegevensinvoer in code invoeren. Hiervoor zullen we 3 gehele getallen X, Y en Z overwegen door Subcategorie in VBA te openen, zoals hieronder weergegeven.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal Einde Sub 

Beschouw nu ook dezelfde wiskundige verdeling die we in het bovenstaande voorbeeld hebben gezien.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Als we de code uitvoeren, krijgen we hetzelfde foutbericht als Runtime-fout 11.

Om deze fout nu te negeren, gebruikt u de tekst On Error GoTo met het woord ““ Resultaat om foutmelding over te slaan en de output te krijgen die goed werkt, zoals hieronder getoond.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal bij fout GoTo ZResultaat: X = 10/0 Y = 20/2 ZResultaat: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Voer de code nu opnieuw uit. We krijgen hetzelfde resultaat als het vorige voorbeeld.

Bij fout helpt GoTo ZResult ons om direct van genoemd resultaatpunt integer te springen zoals we deden voor integer Z.

Voorbeeld 4

In het derde type fout wanneer we de code uitvoeren en VBA niet in staat is om de coderegel te begrijpen. Dit kan worden gedaan met behulp van code On Error Resume Next samen met MsgBox Err.Number . Overweeg dezelfde gegevens als in de bovenstaande voorbeelden. We zullen opnieuw dezelfde 3 gehele getallen X, Y en Z zien zoals hieronder weergegeven.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal Einde Sub 

En voor het afdrukken van de resultaatuitvoer, staan ​​berichtvakken voor alle gehele getallen als uitvoer toe.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Als we nu de volledige code uitvoeren, krijgen we een foutbericht met een wiskundige fout Run time error 11.

Om deze fout te negeren, gebruiken we On Error Resume Next.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal bij fout Hervatten Volgende X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

En voer de code uit. Dit geeft het gebruiksresultaat op een geldige wiskundige regel zoals hieronder weergegeven.

Voeg nu verder de ZResult- coderegel toe voor de wiskundige uitdrukking van de Z-geheel getalverdeling en voeg de MsgBox Err.Number- coderegel toe aan het einde van de code, zoals hieronder wordt weergegeven.

 Sub OnError () Dim X als geheel getal, Y als geheel getal, Z als geheel getal bij fout Hervatten Volgende X = 10/0 Y = 20/2 Z Resultaat: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Voer nu de code uit met behulp van de F5-toets of door op de afspeelknop te drukken, zoals hieronder wordt weergegeven.

Zoals we kunnen zien in de bovenstaande schermafbeeldingen. Het eerste berichtvak heeft 0, wat een onjuiste wiskundige uitdrukking overschrijft. 2 e en 3 e hebben een delingsresultaat van Y- en Z-gehele getallen. En het laatste berichtvak heeft runtime-foutcode 11, die waarschijnlijk de foutcode is van de divisie-uitdrukkingen van X integer.

Voordelen van VBA On Error

  • We kunnen elke wiskundige formule berekenen, zelfs als deze onjuist is.
  • Voor grotere coderingsstructuren waar er kansen zijn of een fout hebben, kan het gebruik van deze methoden een correct resultaat geven, zelfs onder de coderegel.
  • Dit geeft een beter resultaat in vergelijking met het resultaat verkregen uit normale Excel-berekeningen.

Dingen om te onthouden

  • Sla het bestand altijd op in een Excel-bestand met macro's, zodat we de gemaakte VBA-code vele en meerdere keren kunnen gebruiken.
  • Compileer altijd de geschreven code voordat u implementeert met een excel-vereiste.
  • Wijs indien nodig de geschreven code toe aan een willekeurige knop zodat we snel op de knop kunnen klikken en de code kunnen uitvoeren.

U kunt deze VBA On Error Excel-sjabloon hier downloaden - VBA On Error Excel-sjabloon

Aanbevolen artikelen

Dit is een gids voor Excel VBA On Error geweest. Hier hebben we besproken hoe VBA On Error Statement te gebruiken, samen met enkele praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen–

  1. Hoe de VBA TRIM-functie te gebruiken?
  2. Getalnotatie in VBA
  3. Handleiding voor Excel VBA Do While Loop
  4. Hoe de VBA-zoekfunctie te gebruiken?