/ / Fejlhåndtering i Excel VBA

Fejlhåndtering i Excel VBA

Nedenfor vil vi se på to programmer i Excel VBA. Et enkelt program ignorerer fejl. Det andet program fortsætter udførelsen på en bestemt linje ved at ramme en fejl.

Situation:

Begge programmer beregner kvadratroten af ​​tal.

Fejlhåndtering i Excel VBA

Firkantet rod 1

Tilføj følgende kodelinjer til kommandoknappen "Square Root 1".

1. Først erklærer vi to rækkeobjekter. Vi kalder Range objekter rng og celle.

Dim rng As Range, cell As Range

2. Vi initialiserer Range objekt rng med det valgte område.

Set rng = Selection

3. Vi ønsker at beregne kvadratroten af ​​hver celle i et tilfældigt valgt interval (dette område kan være af en hvilken som helst størrelse). I Excel VBA kan du bruge For Each Next-sløjfen til dette. Tilføj følgende kode linjer:

For Each cell In rng

Next cell

Bemærk: rng og celle er tilfældigt valgt her, du kan bruge navne. Husk at henvise til disse navne i resten af ​​din kode.

4. Tilføj følgende kode linje til sløjfen.

On Error Resume Next

5. Herefter beregner vi kvadratroden af ​​en værdi. I Excel VBA kan vi bruge Sqr-funktionen til dette. Tilføj følgende kode linje til sløjfen.

cell.Value = Sqr(cell.Value)

6. Afslut Visual Basic Editor og test programmet.

Resultat:

Ved fejl Genoptag næste resultat

Konklusion: Excel VBA har ignoreret celler, der indeholder ugyldige værdier som negative tal og tekst. Uden at bruge "On Error Resume Next" erklæringen, vil du få to fejl. Pas på kun at bruge "On Error Resume Next" -opgørelsen, når du er sikker på at ignorere fejl er ok.

Square Root 2

Tilføj følgende kodelinjer til kommandoknappen "Square Root 2".

1. Det samme program som Square Root 1, men udskift "On Error Resume Next" med:

On Error GoTo InvalidValue:

Bemærk: InvalidValue vælges tilfældigt her, du kan bruge et hvilket som helst navn. Husk at henvise til dette navn i resten af ​​din kode.

2. Ud over for hver næste sløjfe skal du først føje følgende kode linje:

Exit Sub

Uden denne linje vil resten af ​​koden (fejlkode) blive udført, selvom der ikke er nogen fejl!

3. Excel VBA fortsætter udførelsen på linjen der starter med "InvalidValue:" ved at ramme en fejl (ikke glem kolon). Tilføj følgende kode linje:

InvalidValue:

4. Vi holder vores fejlkode enkel nu. Vi viser en MsgBox med nogle tekst og adressen på cellen, hvor fejlen opstod.

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

5. Tilføj følgende linje for at instruere Excel VBA for at genoptage udførelsen efter at have udført fejlkoden.

Resume Next

6. Afslut Visual Basic Editor og test programmet.

Resultat:

På Fejlsøgning

På Fejlsøgning

På Fejlsøgning

Læs også: