Gidai

Kaip pašalinti „Subscript Out of Range“ klaidą programoje „Visual Basic“?

„Visual Basic for Applications“ (VBA) yra „Microsoft“ sukurta „Visual Basic“ programavimo kalbos įgyvendinimas. VBA gali būti naudojama įgalinant UDF, automatizuojant užduotis ir norint pasiekti WinAPI per DLL. Tačiau visai neseniai buvo pateikta daug pranešimų, kai vartotojai negali įvykdyti tam tikrų komandų irSubkriptas už diapazono ribų, 9 klaida„Pasirodo bandant tai padaryti.

Kas sukelia klaidą „Subscript out of Range“ VBA?

Gavę daugybę pranešimų iš kelių vartotojų, mes nusprendėme ištirti problemą ir sukūrėme sprendimų rinkinį, kad galėtume visiškai išspręsti problemą. Be to, mes ištyrėme priežastis, dėl kurių jis suveikė, ir išvardinome juos taip.

  • Neegzistuojantis elementas:Kai kuriais atvejais gali būti, kad komandoje nurodėte elementą, kurio nėra. Gali būti, kad abonentas yra didesnis arba mažesnis nei galimų abonementų diapazonas, arba matmenys gali būti nepriskirti masyvui šioje programos vietoje.
  • Nenustatyti elementai:Gali būti, kad kode nenustatėte elementų skaičiaus, svarbu, kad masyvo elementų skaičius būtų apibrėžtas naudojant komandas „Dim“ arba „ReDim“.
  • Neteisingas kolekcijos narys: Kai kuriais atvejais vartotojas galėjo nurodyti neegzistuojantį kolekcijos narį. Jei yra neteisinga nuoroda į kolekcijos narį, ši klaida gali būti suaktyvinta.
  • Trumpas scenarijus:Gali būti, kad naudojatės trumpinio formos indeksu ir jame netiesiogiai nurodėte neteisingą elementą. Svarbu naudoti galiojantį rakto pavadinimą.

Dabar, kai jūs iš esmės suprantate problemos pobūdį, mes eisime prie sprendimų. Kad išvengtumėte konfliktų, būtinai juos įgyvendinkite ta tvarka, kuria jie pateikiami.

1 sprendimas: masyvų tikrinimas

Gali būti, kad jūs nustatėte neteisingą elemento Masyvas vertę. Todėl rekomenduojama dar kartą patikrinti masyvo elemento apibrėžtą vertę ir įsitikinti, kad ji yra teisinga. Taip pat įsitikinkite, kad patikrinote masyvo deklaraciją ir patikrinti viršutinė ir apatinė ribos. Jei matricos buvo pakeistos, būtinai naudokite LSusietas ir UBound funkcijos prieigoms sąlygoti. Patikrinkite kintamojo vardo rašybą, jei indeksas yra kintamasis.

2 sprendimas: nurodykite elementų skaičių

Kai kuriais atvejais gali būti, kad kode nenustatėte elementų, dėl kurių suveikia klaida, skaičiaus. Rekomenduojama masyvo elementų skaičių nurodyti naudojant Dim arba „ReDim“ funkcijos.

3 sprendimas: konstrukcijos keitimas

Ši klaida dažniausiai įvyksta, kai vartotojas nurodo neteisingą ar neegzistuojantį kolekcijos narį. Todėl, užuot nurodžius indekso elementus, rekomenduojama kreiptis į „Kiekvienam… Toliau“Konstruoti.

4 sprendimas: Keyname ir Index tikrinimas

Kai kuriais atvejais gali būti, kad naudojate stenografo formą ir ji nurodo netinkamą elementą. Todėl rekomenduojama naudoti a galiojantis raktasvardas ir indeksas kolekcijai.

$config[zx-auto] not found$config[zx-overlay] not found