VBA-abonnement uden for rækkevidde (Run-Time Error '9') - Hvorfor opstår denne fejl?

Excel VBA-abonnement uden for rækkevidde

Abonnement uden for området er en fejl, vi støder på i VBA, når vi forsøger at henvise til noget eller en variabel, som ikke findes i en kode, for eksempel lad os antage, at vi ikke har en variabel, der hedder x, men vi bruger msgbox-funktionen på x vi vil støde på abonnement uden for rækkevidde.

VBA-abonnement uden for rækkevidde opstår, fordi det objekt, vi prøver at få adgang til, ikke eksisterer. Dette er en fejltype i VBA-kodning, og dette er en "Run Time Error 9". Det er vigtigt at forstå begreberne til at skrive effektiv kode, og det er endnu vigtigere at forstå fejlen i din VBA-kode for at debugge koden effektivt.

Hvis din kodningsfejl, og du ikke ved, hvad den fejl er, når du er væk.

En læge kan ikke give medicin til sin patient uden at vide, hvad sygdommen er. Helt sikkert ved læger og patienter, at der er en sygdom (fejl), men det er vigtigt at forstå sygdommen (fejl) end at give medicin til den. Hvis du kan forstå fejlen perfekt, er det meget lettere at finde løsningen.

På en lignende note i denne artikel vil vi se en af ​​de vigtige fejl, vi normalt støder på regelmæssighed, dvs. "Subscript Out of Range" -fejl i Excel VBA.

Hvad er abonnement uden for rækkevidde i Excel VBA?

For eksempel, hvis du henviser til arket, der ikke er der, er projektmappen, så får vi Kørselstidsfejl 9: "Abonnement uden for rækkevidde."

Hvis du klikker på knappen Afslut, vil det afslutte underproceduren. Hvis du klikker på fejlretning, vil det tage dig til kodelinjen, hvor den stødte på en fejl, og hjælp fører dig til Microsofts webstedsside.

Hvorfor opstår der abonnement uden for rækkevidde?

Som jeg fortalte som en læge vigtigt at finde den afdøde, før man tænker på medicinen. VBA-abonnement uden for rækkevidde opstår, når kodelinjen ikke læser det objekt, vi indtastede.

Se for eksempel på nedenstående billede. Jeg har tre ark med navnet Sheet1, Sheet2, Sheet3.

Nu i koden har jeg skrevet koden for at vælge arket "Salg".

Kode:

Sub Macro2 () Sheets ("Salg"). Vælg End Sub

Hvis jeg kører denne kode ved hjælp af F5-tasten eller manuelt, får jeg kørselstidsfejl 9: "Abonnement uden for rækkevidde."

Dette skyldes, at jeg forsøgte at få adgang til regnearkobjektet "Salg", som ikke findes i projektmappen. Dette er en kørselstidsfejl, fordi denne fejl opstod under kørsel af koden.

En anden almindelig abonnementsfejl, vi får, er når vi henviser til projektmappen, som ikke er der. Se f.eks. Nedenstående kode.

Kode:

Undermakro1 () Dim Wb som projektmappesæt Wb = projektmapper ("Lønark.xlsx") Afslut sub

Ovenstående kode siger, at variabel WB skal være lig med projektmappen "Lønark.xlsx." Fra nu af åbnes denne projektmappe ikke på min computer. Hvis jeg kører denne kode manuelt eller gennem F5-tasten, får jeg kørselstidsfejl 9: "Abonnement uden for rækkevidde."

Dette skyldes den projektmappe, jeg henviser til, som enten ikke er åben lige nu eller slet ikke findes.

VBA-abonnementsfejl i arrays

Når du erklærer arrayet som det dynamiske array, og hvis du ikke bruger ordet DIM eller REDIM i VBA til at definere længden af ​​et array, får vi normalt VBA Subscript uden for rækkevidde. Se f.eks. Nedenstående kode.

Kode:

Sub Macro3 () Dim MyArray () Så længe MyArray (1) = 25 End Sub

I ovenstående har jeg erklæret variablen som en matrix, men jeg har ikke tildelt et start- og slutpunkt; snarere har jeg straks tildelt den første matrix værdien på 25.

Hvis jeg kører denne kode ved hjælp af F5-tasten eller manuelt, får vi kørselstidsfejl 9: "Abonnement uden for rækkevidde."

For at løse dette problem skal jeg tildele længden på en matrix ved hjælp af Redim-ordet.

Kode:

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

Denne kode giver ingen fejl.

Hvordan vises fejl i slutningen af ​​VBA-koden?

Hvis du ikke vil se fejlen, mens koden er i gang, men har brug for en fejlliste i slutningen, skal du bruge fejlbehandleren "On Error Resume". Se på nedenstående kode.

Kode:

Undermakro1 () Dim Wb som projektmappe ved fejl Genoptag Næste sæt Wb = projektmapper ("Lønark.xlsx") MsgBox Fejlbeskrivelse Slut sub

Som vi har set, kaster denne kode Run time error 9: “Abonnement uden for rækkevidde i Excel VBA . Men jeg er nødt til at bruge fejlhåndteringen On Error Resume Next i VBA, mens jeg kører koden. Vi får ikke nogen fejlmeddelelser. Snarere i slutmeddelelsesboksen viser mig fejlbeskrivelsen som denne.

Du kan downloade Excel VBA-abonnement uden for rækkevidde-skabelon her: - VBA-abonnement uden for rækkevidde-skabelon

Interessante artikler...