Alle VBA feil er ikke skapt like. Noen er seriøse, og noen er mindre alvorlige. Selv om du kan ignorere feil du anser for å være ubetydelig, må du avtale med andre, mer alvorlige feil. I noen tilfeller må du identifisere den spesifikke feil som oppstår.
Hver type feil har en offisiell nummer. Når det oppstår en feil, Excel lagrer feilnummeret i en feil objekt heter Err. Dette objektets Antall Eiendommen inneholder feilnummeret, og dens Beskrivelse Eiendommen inneholder en beskrivelse av feilen. For eksempel viser følgende uttalelse feilnummeret, et kolon, og en beskrivelse av feilen:
MsgBox err.number & ":" &Amp; Err.Description
Husk at Excel feilmeldinger er ikke alltid veldig nyttig - men du vet allerede at
Følgende fremgangsmåte viser hvordan du finner ut hvilke feil oppsto.. I dette tilfellet, kan du trygt ignorere feil forårsaket ved å prøve å få kvadratroten av en-positiv nummer (det vil si feil 5) eller feil forårsaket ved å prøve å få kvadratroten av en ikke-numerisk verdi (feil 13). Anmeldelser
På den annen side, må du informere brukeren om regnearket er beskyttet og utvalget inneholder ett eller flere låste celler. (Ellers kan brukeren tror makro arbeidet når det egentlig ikke.) Forsøk på å skrive til en låst celle i et beskyttet regneark forårsaker feilen 1004.
Sub SelectionSqrt () Dim celle Som Range Dim errmsg As String Hvis Typename (Utvalg) < > "Range" Then Exit Sub On Error GoTo Errorhandler For Hver celle i utvalg cell.Value = Sqr (cell.Value) Neste celle Exit SubErrorHandler: Velg Sak err.number Sak 5 'Negative tall Resume Neste Case 13' Type mismatch Resume Neste Case 1 004 'Låst celle, beskyttet ark MsgBox ".. Cell er låst Prøv igjen", vbCritical, cell.Address Exit Sub sak Else errmsg = Feil (err.number) MsgBox "FEIL:" & Errmsg, vbCritical, cell.Address Exit Sub End SelectEnd Sub
Når det oppstår en runtime error, hopper kjøringen til kode som begynner på Errorhandler etiketten. Select sak strukturtester for tre vanligste feil tall. Hvis feilen tallet er 5 eller 13, gjenopptar utførelsen på neste setning. (Med andre ord, er feil ignorert.) Men hvis feilnummeret er 1004, råder rutinen brukeren og deretter avsluttes. Det siste tilfellet, en catch-all for uventede feil, feller alle andre feil og viser den faktiske feilmeldingen. Anmeldelser