300 Exempel

Felhantering

Error Handling

Nedan kommer vi att titta på två program i Excel VBA . Ett program helt enkelt ignorerar fel . Det andra programmet fortsätter körningen på en angiven rad vid fel.





Situation:

Båda programmen beräknar roten ur av siffror.





Felhantering i Excel VBA

Kvadratrot 1

Lägg till följande kodrader till kommandoknappen 'Square Root 1'.



1. Först deklarerar vi två Range -objekt. Vi kallar Range -objekt rng och cell.

IngenrngSomRäckvidd, cellSomRäckvidd

2. Vi initierar Range -objektet rng med det valda intervallet.

Uppsättningrng = Urval

3. Vi vill beräkna kvadratroten för varje cell i ett slumpmässigt valt område (detta område kan vara av valfri storlek). I Excel VBA kan du använda slingan för varje nästa för detta. Lägg till följande kodrader:

För VarjecellIrng

Nästacell

Obs! Rng och cell väljs slumpmässigt här, du kan använda alla namn. Kom ihåg att hänvisa till dessa namn i resten av din kod.

4. Lägg till följande kodrad i slingan.

Vid fel Återuppta nästa

5. Därefter beräknar vi kvadratroten av ett värde. I Excel VBA kan vi använda Sqr -funktionen för detta. Lägg till följande kodrad i slingan.

cell.Value = Sqr (cell.Value)

6. Avsluta Visual Basic Editor och testa programmet.

Resultat:

Vid fel Återuppta nästa resultat

Slutsats: Excel VBA har ignorerat celler som innehåller ogiltiga värden som negativa tal och text. Utan att använda 'On Error Resume Next' -uttalandet skulle du få två fel. Var noga med att bara använda uttalandet 'Vid felåterupptagning nästa' när du är säker på att ignorera fel är OK.

Square Root 2

Lägg till följande kodrader till kommandoknappen 'Square Root 2'.

1. Samma program som Square Root 1 men ersätt 'Vid fel Återuppta nästa' med:

Vid fel GoToOgiltigt värde:

Obs! InvalidValue väljs slumpmässigt här, du kan använda valfritt namn. Kom ihåg att hänvisa till detta namn i resten av din kod.

2. Utanför varje nästa slinga, lägg först till följande kodrad:

Utgång Sub

Utan denna rad kommer resten av koden (felkoden) att köras, även om det inte finns något fel!

3. Excel VBA fortsätter körningen på raden som börjar med 'InvalidValue:' när du träffar ett fel (glöm inte kolon). Lägg till följande kodrad:

Ogiltigt värde:

4. Vi håller vår felkod enkel för tillfället. Vi visar en MsgBox med lite text och adressen till cellen där felet uppstod.

MsgBox 'kan inte beräkna kvadratroten vid cell' och cell.Adress

5. Lägg till följande rad för att instruera Excel VBA att återuppta körningen efter att felkoden har körts.

Återuppta Nästa

6. Avsluta Visual Basic Editor och testa programmet.

Resultat:

excel formel antal månader mellan två datum

På fel GoTo Resultat

På fel GoTo Resultat

På fel GoTo Resultat

3/6 klar! Läs mer om makrofel>
Gå till nästa kapitel: Strängmanipulation



^