Werkboeken | Werkbladen | Array
De 'subscript buiten bereik' fout in Excel VBA treedt op wanneer u verwijst naar een niet-bestaand verzamelingslid of een niet-bestaand array-element.
Plaats een opdrachtknop op uw werkblad en voeg de onderstaande coderegels toe. Om de coderegels uit te voeren, klikt u op de opdrachtknop op het blad.
Werkmappen
De verzameling werkmappen in Excel VBA bevat alle werkmapobjecten die momenteel zijn geopend.
1. De onderstaande coderegel sluit sales.xlsm af.
Werkmappen ("sales.xlsm").Sluiten
Resultaat wanneer er geen open werkmap is met deze naam:
Opmerking: om deze 'subscript buiten bereik'-fout op te lossen (runtime-fout 9), open sales.xlsm voordat u op de opdrachtknop klikt.
Werkbladen
De verzameling werkbladen in Excel VBA bevat alle werkbladobjecten in een werkmap. Ons werkboek heeft 3 werkbladen.
1. De onderstaande coderegel probeert het woord Hallo in cel A1 op het 4e werkblad te plaatsen.
Werkbladen(4).Bereik("A1").Waarde = "Hallo"
Resultaat wanneer u op de opdrachtknop op het werkblad klikt:
Uitleg: de foutmelding 'subscript buiten bereik' verschijnt omdat er geen 4e werkblad is. Om deze fout op te lossen, wijzigt u de 4 in een 1, 2 of 3 (of voegt u een nieuw werkblad in door op het plusteken te klikken).
Array
Een array is een groep variabelen. In Excel VBA kunt u verwijzen naar een specifieke variabele (element) van een array door de arraynaam en het indexnummer te gebruiken.
1. De eerste coderegel hieronder declareert een String-array met de naam Films. De array bestaat uit vijf elementen.
2. Vervolgens initialiseren we elk element van de array.
3. De laatste coderegel probeert het 6e element weer te geven met behulp van een MsgBox.
Dim films (1 tot 5) als string
Films(1) = "Lord of the Rings"
Filmpjes(2) = "Snelheid"
Films (3) = "Star Wars"
Films(4) = "De peetvader"
Films(5) = "Pulp Fiction"
MsgBox-films(6)
Resultaat wanneer u op de opdrachtknop op het werkblad klikt:
Uitleg: de foutmelding 'subscript buiten bereik' verschijnt omdat er geen 6e element is. Om deze fout op te lossen, wijzigt u de 6 in een 1, 2, 3, 4 of 5 (of declareert u een String-array met 6 elementen).