Vejledninger

Hvordan fikser jeg 'Abonnement uden for rækkevidde' i Visual Basic til applikationer?

Visual Basic for Applications (VBA) er en implementering af Visual Basic-programmeringssproget udviklet af Microsoft. VBA kan bruges til at aktivere UDF'er, automatisere opgaver og til at få adgang til WinAPI gennem DLL'er. For nylig er der imidlertid kommet mange rapporter, hvor brugerne ikke er i stand til at udføre bestemte kommandoer og en “Abonnement uden for rækkevidde, fejl 9”Popper op, mens du prøver at gøre det.

Hvad forårsager fejlen "Abonnement uden for rækkevidde" i VBA?

Efter at have modtaget adskillige rapporter fra flere brugere, besluttede vi at undersøge problemet og udtænkte et sæt løsninger til at løse det fuldstændigt. Vi kiggede også på årsagerne til, at den blev udløst, og opførte dem som følger.

  • Ikke-eksisterende element:I nogle tilfælde er det muligt, at du måske har henvist til et element i kommandoen, der ikke findes. Det er muligt, at abonnementet enten er større eller mindre end rækkevidden af ​​mulige abonnementer eller dimensioner, der muligvis ikke er tildelt arrayet på dette tidspunkt i applikationen.
  • Udefinerede elementer:Det er muligt, at du ikke identificerede antallet af elementer i din kode, det er vigtigt, at antallet af elementer i en matrix defineres ved hjælp af kommandoerne "Dim" eller "ReDim".
  • Forkert indsamlingsmedlem: I nogle tilfælde har brugeren muligvis henvist til et indsamlingsmedlem, der ikke findes. Hvis der foretages en forkert henvisning til indsamlingsmedlemmet, kan denne fejl muligvis udløses.
  • Stenografi script:Det er muligt, at du har gjort brug af en stenografisk form af abonnement, og det angav implicit et element, der var ugyldigt. Det er vigtigt at bruge et gyldigt nøglenavn.

Nu hvor du har en grundlæggende forståelse af problemets art, vil vi gå videre mod løsningerne. Sørg for at implementere disse i den specifikke rækkefølge, som de præsenteres for at undgå konflikt.

Løsning 1: Kontrol af arrays

Det er muligt, at du har defineret en forkert værdi for Array-elementet. Derfor anbefales det at dobbelttjekke den værdi, du har defineret for Array-elementet og sørge for, at det er den rigtige. Sørg også for at kontrollere kontrolopgaven for arrayet og verificere øvre og nedre grænse. Hvis arrays er blevet redimensioneret, skal du sørge for at bruge LBound og UBundet funktioner til tilstandsadgang. Kontroller stavningen af ​​variabelnavnet, hvis indekset er en variabel.

Løsning 2: Angivelse af antal elementer

I nogle tilfælde er det muligt, at du muligvis ikke har defineret antallet af elementer i din kode, som fejlen udløses af. Det anbefales, at du angiver antallet af elementer i arrayet ved hjælp af Svag eller ReDim funktioner.

Løsning 3: Ændring af konstruktion

Denne fejl udløses ofte, når brugeren angiver et forkert eller ikke-eksisterende indsamlingsmedlem. I stedet for at specificere indekselementerne anbefales det derfor, at du nærmer dig med “For hver ... Næste”Konstruktion.

Løsning 4: Kontrol af nøglenavn og indeks

I nogle tilfælde er det muligt, at du muligvis har brugt en stenografisk form af abonnementet, og det angiver et ugyldigt element. Derfor anbefales det, at du bruger en gyldig nøglenavn og indeks til samlingen.