VBA-abonnement utenfor rekkevidde (kjøretidsfeil '9') - Hvorfor oppstår denne feilen?

Excel VBA-abonnement utenfor rekkevidde

Abonnement utenfor rekkevidde er en feil vi støter på i VBA når vi prøver å referere til noe eller en variabel som ikke eksisterer i en kode, for eksempel, la oss anta at vi ikke har en variabel som heter x, men vi bruker msgbox-funksjonen på x vi vil møte abonnement utenfor rekkevidde feil.

VBA-abonnement utenfor rekkevidde oppstår fordi objektet vi prøver å få tilgang til ikke eksisterer. Dette er en feiltype i VBA-koding, og dette er en "Run Time Error 9". Det er viktig å forstå konseptene for å skrive effektiv kode, og det er enda viktigere å forstå feilen i VBA-koden din for å feilsøke koden effektivt.

Hvis kodingsfeilen din, og du ikke vet hva den feilen er når du er borte.

En lege kan ikke gi medisin til pasienten sin uten å vite hva sykdommen er. Sikkert vet leger og pasienter at det er en sykdom (feil), men det er viktig å forstå sykdommen (feilen) enn å gi medisin til den. Hvis du kan forstå feilen perfekt, er det mye lettere å finne løsningen.

På et lignende notat i denne artikkelen vil vi se en av de viktige feilene vi vanligvis støter på regelmessighet, dvs. "Feil i abonnement utenfor rekkevidde" i Excel VBA.

Hva er abonnement utenfor rekkevidde i Excel VBA?

For eksempel, hvis du refererer til arket som ikke er der arbeidsboken, får vi Kjøretidsfeil 9: "Abonnement utenfor rekkevidde."

Hvis du klikker på Avslutt-knappen, vil den avslutte underprosedyren. Hvis du klikker på feilsøking, tar den deg til kodelinjen der den oppstod en feil, og hjelpen tar deg til Microsofts nettside.

Hvorfor oppstår feil utenfor rekkevidde?

Som jeg fortalte som lege viktig å finne den avdøde før du tenker på medisinen. VBA-abonnement utenfor rekkevidde oppstår når kodelinjen ikke leser objektet vi skrev inn.

Se for eksempel på bildet nedenfor. Jeg har tre ark med navnet Sheet1, Sheet2, Sheet3.

Nå i koden har jeg skrevet koden for å velge arket "Salg."

Kode:

Sub Macro2 () Sheets ("Salg"). Velg End Sub

Hvis jeg kjører denne koden ved hjelp av F5-tasten eller manuelt, vil jeg ende opp med å få kjøretidfeil 9: "Abonnement utenfor rekkevidde."

Dette er fordi jeg prøvde å få tilgang til regnearkobjektet "Salg", som ikke finnes i arbeidsboken. Dette er en kjøretidsfeil fordi denne feilen oppstod mens du kjørte koden.

En annen vanlig abonnementsfeil vi får er når vi refererer til arbeidsboken som ikke er der. Se for eksempel på koden nedenfor.

Kode:

Undermakro1 () Dim Wb som arbeidsbokssett Wb = arbeidsbøker ("Lønnsark.xlsx") Slutt sub

Ovennevnte kode sier at variabel WB skal være lik arbeidsboken "Lønnsark. Xlsx." Per nå er denne arbeidsboken ikke åpnet på datamaskinen min. Hvis jeg kjører denne koden manuelt eller gjennom F5-tasten, får jeg kjøretidfeil 9: "Abonnement utenfor rekkevidde."

Dette skyldes arbeidsboken jeg refererer til, som enten ikke er åpen fra nå av eller ikke eksisterer i det hele tatt.

VBA-abonnementsfeil i matriser

Når du erklærer matrisen som den dynamiske matrisen, og hvis du ikke bruker ordet DIM eller REDIM i VBA for å definere lengden på en matrise, får vi vanligvis VBA Subscript utenfor rekkevidde feil. Se for eksempel på koden nedenfor.

Kode:

Sub Macro3 () Dim MyArray () Så lenge MyArray (1) = 25 End Sub

I det ovennevnte har jeg erklært variabelen som en matrise, men jeg har ikke tildelt et start- og sluttpunkt; heller, jeg har straks tildelt den første matrisen verdien 25.

Hvis jeg kjører denne koden ved hjelp av F5-tasten eller manuelt, får vi kjøretidsfeil 9: "Abonnement utenfor rekkevidde."

For å fikse dette problemet, må jeg tilordne lengden på en matrise ved å bruke Redim-ordet.

Kode:

Sub Macro3 () Dim MyArray () As Long ReDim MyArray (1 To 5) MyArray (1) = 25 End Sub

Denne koden gir ingen feil.

Hvordan viser feil på slutten av VBA-koden?

Hvis du ikke vil se feilen mens koden er i gang, men trenger en feilliste på slutten, må du bruke feilbehandleren “On Error Resume”. Se på koden nedenfor.

Kode:

Undermakro1 () Dim Wb som arbeidsbok på feil Fortsett Neste sett Wb = arbeidsbøker ("Lønnsark.xlsx") MsgBox Feil. Beskrivelse Slutt sub

Som vi har sett, vil denne koden kaste Run time error 9: “Subscript out of Range in Excel VBA . Men jeg må bruke feilbehandleren On Error Resume Next i VBA mens jeg kjører koden. Vi får ingen feilmeldinger. Snarere i slutten av meldingsboksen viser meg feilbeskrivelsen slik.

Du kan laste ned Excel VBA Subscript Out of Range Mal her: - VBA Subscribe Out of Range Mal

Interessante artikler...