Hoe de ‘Subscript buiten bereik’ -fout in Visual Basic for Applications te repareren?



Probeer Ons Instrument Voor Het Oplossen Van Problemen

Visual Basic for Applications (VBA) is een implementatie van de door Microsoft ontwikkelde programmeertaal Visual Basic. VBA kan worden gebruikt voor het inschakelen van UDF's, het automatiseren van taken en voor toegang tot WinAPI via DLL's. Onlangs zijn er echter veel rapporten binnengekomen waarin gebruikers bepaalde opdrachten niet konden uitvoeren en een ' Abonnement buiten bereik, fout 9 ”Opduikt terwijl hij dit probeert.



Fout in abonnement buiten bereik



Wat veroorzaakt de fout 'Subscript buiten bereik' in VBA?

Nadat we talloze rapporten van meerdere gebruikers hadden ontvangen, besloten we het probleem te onderzoeken en een reeks oplossingen te bedenken om het volledig op te lossen. We hebben ook gekeken naar de redenen waardoor het wordt geactiveerd en hebben deze als volgt vermeld.



  • Niet-bestaand element: In sommige gevallen is het mogelijk dat u heeft verwezen naar een element in de opdracht dat niet bestaat. Het is mogelijk dat het subscript groter of kleiner is dan het bereik van mogelijke subscripts, of dat er op dit punt in de applicatie geen dimensies aan de array zijn toegewezen.
  • Ongedefinieerde elementen: Het is mogelijk dat u het aantal elementen in uw code niet heeft geïdentificeerd, het is belangrijk dat het aantal elementen in een array wordt gedefinieerd met behulp van de 'Dim' of 'ReDim' -opdrachten.
  • Onjuist incassolid: In sommige gevallen heeft de gebruiker mogelijk verwezen naar een collectielid dat niet bestaat. Als er een onjuiste verwijzing naar het collectielid wordt gemaakt, kan deze fout worden geactiveerd.
  • Steno-script: Het is mogelijk dat u gebruik heeft gemaakt van een verkorte vorm van subscript en impliciet een element heeft gespecificeerd dat ongeldig was. Het is belangrijk om een ​​geldige sleutelnaam te gebruiken.

Nu u een basiskennis heeft van de aard van het probleem, gaan we verder met de oplossingen. Zorg ervoor dat u deze implementeert in de specifieke volgorde waarin ze worden gepresenteerd om conflicten te voorkomen.

Oplossing 1: arrays controleren

Het is mogelijk dat u een onjuiste waarde heeft gedefinieerd voor het Array-element. Daarom wordt aanbevolen om de waarde die u hebt gedefinieerd voor het Array-element nogmaals te controleren en ervoor te zorgen dat dit de juiste is. Zorg er ook voor dat u de declaratie van de array en verifiëren de boven- en ondergrenzen. Als de arrays opnieuw zijn gedimensioneerd, moet u de LBound en U-gebonden functies om toegang te conditioneren. Controleer de spelling van de variabelenaam als de index een variabele is.

Matrix in VBA Excel



Oplossing 2: specificeer het aantal elementen

In sommige gevallen is het mogelijk dat u niet het aantal elementen in uw code heeft gedefinieerd waardoor de fout wordt geactiveerd. Het wordt aanbevolen om het aantal elementen in de array op te geven met de Geen of ReDim functies.

Gebruik Dim en ReDim om het aantal elementen op te geven

Oplossing 3: Construct

Deze fout treedt meestal op wanneer de gebruiker een onjuist of niet-bestaand collectielid opgeeft. Daarom is het raadzaam om in plaats van de indexelementen op te geven, te benaderen met de ' Voor elk… Volgende ”Construeren.

Gebruik 'For Each ... Next' construct

Oplossing 4: sleutelnaam en index controleren

In sommige gevallen is het mogelijk dat u een verkorte vorm van het subscript hebt gebruikt en het specificeert een ongeldig element. Daarom wordt aanbevolen dat u een geldige sleutel naam en inhoudsopgave voor de collectie.

Gebruik een geldige sleutelnaam

2 minuten gelezen