Feilhåndtering i Excel VBA
Nedenfor ser vi på to programmer i Excel VBA. Ett program ganske enkelt ignorerer feil. Det andre programmet fortsetter kjøring på en spesifisert linje ved å treffe en feil.
Situasjon:
Begge programmene beregner kvadratroten av tall.
Firkantrot 1
Legg til følgende kodelinjer på kommandoknappen "Square Root 1".
1. Først erklærer vi to Range-objekter. Vi kaller Range objektene rng og celle.
2. Vi initialiserer Range object rng med det valgte området.
3. Vi vil beregne kvadratroten til hver celle i et tilfeldig valgt område (dette området kan være av en hvilken som helst størrelse). I Excel VBA kan du bruke For hver neste sløyfe for dette. Legg til følgende kodelinjer:
Next cell
Merk: rng og celle er tilfeldig valgt her, du kan bruke noen navn. Husk å henvise til disse navnene i resten av koden din.
4. Legg til følgende kode linje i sløyfen.
5. Deretter beregner vi kvadratroten av en verdi. I Excel VBA kan vi bruke Sqr-funksjonen for dette. Legg til følgende kode linje i sløyfen.
6. Avslutt Visual Basic Editor og test programmet.
Resultat:
Konklusjon: Excel VBA har ignorert celler som inneholder ugyldige verdier som negative tall og tekst. Uten å bruke "On Error Resume Next" -oppsettet vil du få to feil. Vær forsiktig med å bare bruke "På feil fortsett neste" setningen når du er sikker på å ignorere feil er OK.
Firkantrot 2
Legg til følgende kodelinjer på "Square Root 2" kommandoknappen.
1. Det samme programmet som Square Root 1, men erstatt "On Error Resume Next" med:
Merk: InvalidValue er tilfeldig valgt her, du kan bruke noe navn. Husk å henvise til dette navnet i resten av koden din.
2. Først for hver neste sløyfe, legg først til følgende kodelinje:
Uten denne linjen vil resten av koden (feilkode) bli utført, selv om det ikke er noen feil!
3. Excel VBA fortsetter kjøring på linjen som starter med "InvalidValue:" ved å treffe en feil (ikke glem kolon). Legg til følgende kodelinje:
4. Vi holder vår feilkode enkel for nå. Vi viser en MsgBox med litt tekst og adressen til cellen der feilen oppstod.
5. Legg til følgende linje for å instruere Excel VBA for å gjenoppta utførelsen etter å ha utført feilkoden.
6. Avslutt Visual Basic Editor og test programmet.
Resultat: