/ / Feilhåndtering i Excel VBA

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.

Feilhåndtering i Excel VBA

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.

Dim rng As Range, cell As Range

2. Vi initialiserer Range object rng med det valgte området.

Set rng = Selection

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:

For Each cell In rng

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.

On Error Resume Next

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.

cell.Value = Sqr(cell.Value)

6. Avslutt Visual Basic Editor og test programmet.

Resultat:

På Feil Fortsett Neste 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:

On Error GoTo InvalidValue:

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:

Exit Sub

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:

InvalidValue:

4. Vi holder vår feilkode enkel for nå. Vi viser en MsgBox med litt tekst og adressen til cellen der feilen oppstod.

MsgBox "can"t calculate square root at cell " & cell.Address

5. Legg til følgende linje for å instruere Excel VBA for å gjenoppta utførelsen etter å ha utført feilkoden.

Resume Next

6. Avslutt Visual Basic Editor og test programmet.

Resultat:

På feilresultatet

På feilresultatet

På feilresultatet

Les også: