Kako popraviti napako »Subscript Out of Range« v programu Visual Basic za aplikacije?



Preizkusite Naš Instrument Za Odpravo Težav

Visual Basic for Applications (VBA) je izvedba programskega jezika Visual Basic, ki ga je razvil Microsoft. VBA se lahko uporablja za omogočanje UDF-jev, avtomatizacijo opravil in dostop do WinAPI prek DLL-jev. Vendar pa v zadnjem času prihaja veliko poročil, kjer uporabniki ne morejo izvršiti določenih ukazov in Podpisnik izven dosega, napaka 9 ”Pojavi se med poskusom.



Napaka v indeksu izven obsega



Kaj povzroča napako »Subscript Out of Range« v VBA?

Po prejemu številnih poročil več uporabnikov smo se odločili raziskati težavo in oblikovali nabor rešitev, ki jo bodo v celoti odpravili. Preučili smo tudi razloge, zaradi katerih se sproži, in jih navedli na naslednji način.



  • Neobstoječi element: V nekaterih primerih je možno, da ste se v ukazu sklicevali na element, ki ne obstaja. Možno je, da je podpis večji ali manjši od obsega možnih podpisov ali dimenzij, ki trenutno niso bile dodeljene matriki v aplikaciji.
  • Nedoločeni elementi: Možno je, da niste prepoznali števila elementov v svoji kodi, pomembno je, da število elementov v matriki določite z ukazoma »Dim« ali »ReDim«.
  • Nepravilen član zbirke: V nekaterih primerih se je uporabnik morda skliceval na člana zbirke, ki ne obstaja. Če se napačno sklicuje na člana zbirke, se lahko ta napaka sproži.
  • Okrajšani scenarij: Možno je, da ste uporabili stenografsko obliko podpisa in je implicitno navedel neveljaven element. Pomembno je, da uporabite veljavno ime ključa.

Zdaj, ko dobro razumete naravo problema, bomo šli naprej k rešitvam. Poskrbite, da jih boste uporabili v določenem vrstnem redu, v katerem so predstavljeni, da se izognete konfliktu.

1. rešitev: Preverjanje nizov

Možno je, da ste za element Array definirali napačno vrednost. Zato je priporočljivo, da dvakrat preverite vrednost, ki ste jo določili za element Array, in se prepričate, da je pravilna. Prepričajte se tudi, da ste preverili deklaracijo matrike in preverite zgornja in spodnja meja. Če so nizi preoblikovani, ne pozabite uporabiti LBound in UBound funkcije za pogojevanje dostopov. Preverite črkovanje imena spremenljivke, če je indeks spremenljivka.

Matrika v programu VBA Excel



Rešitev 2: Določanje števila elementov

V nekaterih primerih je možno, da v kodi niste določili števila elementov, zaradi katerih se napaka sproži. Priporočljivo je, da določite število elementov v matriki s pomočjo Nobenega ali ReDim funkcije.

S pomočjo Dim in ReDim določite število elementov

Rešitev 3: Spreminjanje konstrukcije

Ta napaka se običajno sproži, ko uporabnik poda napačen ali neobstoječ član zbirke. Zato namesto določanja elementov indeksa priporočamo, da pristopite z Za vsakega ... Naprej ”Konstruirati.

Uporaba konstrukcije 'Za vsakega ... naslednjega'

4. rešitev: Preverjanje imena ključa in indeksa

V nekaterih primerih je možno, da ste uporabili okrajšavo podpisnika in podaja neveljaven element. Zato je priporočljivo, da uporabite a veljaven ključ ime in indeks za zbirko.

Uporaba veljavnega imena ključa

2 minuti branja