ReDim, instructie

       

Gebruik deze instructie op procedureniveau om dynamische variabelen voor een matrix te declareren en geheugenruimte (opnieuw) toe te wijzen.

Syntaxis

ReDim [Preserve] varnaam(subscripts) [As type] [, varnaam(subscripts) [As type]] . . .

De syntaxis van de instructie ReDim bevat de volgende onderdelen:

Onderdeel Beschrijving
Preserve Optioneel. Een sleutelwoord dat de gegevens behoudt in een bestaande matrix als u de grootte van de laatste dimensie wijzigt.
Varnaam Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
subscripts Vereist. Dimensies van een matrixvariabele. U kunt maximaal 60 meervoudige dimensies declareren. Voor het argument subscripts geldt de volgende syntaxis:

[laagste To] hoogste [,[laagste To] hoogste] . . .

Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.

type Optioneel. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype. Gebruik voor elke variabele die u declareert een aparte component As type. Voor een Variant die een matrix bevat, beschrijft type het gegevenstype van elk onderdeel van de matrix, maar het gegevenstype Variant wordt niet omgezet in een ander gegevenstype.

Notities

U gebruikt de instructie ReDim meestal om de grootte van een dynamische matrix in te stellen of aan te passen die reeds formeel is gedeclareerd met een instructie Private, Public of Dim met lege haakjes (zonder dimensiesubscripts).

Gebruik de instructie ReDim meerdere malen om het aantal onderdelen en dimensies in een matrix te wijzigen. U kunt echter niet een matrix met een bepaald gegevenstype declareren en deze matrix vervolgens met de instructie ReDim wijzigen in een ander gegevenstype, tenzij de matrix in een gegevenstype Variant is opgenomen. Als de matrix is opgenomen in een Variant, kunnen de typen van de elementen worden gewijzigd met een component As type, behalve als u een sleutelwoord Preserve gebruikt. In dat geval zijn geen wijzigingen van gegevenstypen toegestaan.

Met het sleutelwoord Preserve kunt u alleen de laatste matrixdimensie wijzigen. U kunt het aantal dimensies in het geheel niet wijzigen. Als de matrix bijvoorbeeld slechts ΘΘn dimensie heeft, kunt u de grootte van deze dimensie aanpassen omdat dit de laatste en enige dimensie is. Als de matrix echter twee of meer dimensies heeft, kunt u alleen de grootte van de laatste dimensie wijzigen en toch de inhoud van de matrix behouden. Het volgende voorbeeld geeft aan u hoe de grootte van de laatste dimensie van een dynamische matrix kunt wijzigen zonder bestaande gegevens te verwijderen die in de matrix zijn opgenomen.

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)

Op dezelfde manier kunt u bij het gebruik van Preserve de omvang van de matrix wijzigen door alleen de bovenste grens te wijzigen; het wijzigen van de onderste grens veroorzaakt een fout.

Als u een matrix kleiner maakt dan voorheen, gaan de gegevens in de verwijderde elementen verloren. Als u een matrix doorgeeft aan een procedure via een verwijzing, kunt u de dimensie van de matrix niet bijwerken in de procedure.

Variabelen worden als volgt ge∩nitialiseerd: een numerieke variabele wordt ge∩nitialiseerd op 0, een tekenreeks met variabele lengte wordt ge∩nitialiseerd op een tekenreeks met een lengte nul ("") en een tekenreeks met vaste lengte wordt opgevuld met nullen. Een variabele Variant wordt ge∩nitialiseerd op Empty. Elk onderdeel van een door de gebruiker gedefinieerde variabele wordt ge∩nitialiseerd alsof het een afzonderlijke variabele betreft. U kunt een variabele die naar een object verwijst, pas gebruiken nadat u deze met de instructie Set aan een bestaand object hebt toegewezen. Totdat een object aan de gedeclareerde objectvariabele is toegewezen, heeft de variabele de speciale waarde Nothing. Deze waarde geeft aan dat niet naar een bepaald object wordt verwezen.

Let op   De instructie ReDim werkt als een declaratie-instructie als de variabele die de instructie declareert, niet op moduleniveau of procedureniveau bestaat. Als later een andere variabele met dezelfde naam wordt gemaakt, zelfs in een breder bereik, verwijst ReDim naar de latere variabele en zal niet direct een compileerfout veroorzaken, zelfs als Option Explicit wordt gebruikt. Als u zulke conflicten wilt voorkomen, moet u ReDim niet gebruiken als een declaratie-instructie, maar gewoon voor het wijzigen van de grootte van matrices.

Opmerking   Declareer de variabele Variant expliciet voordat u de grootte van een matrix wijzigt die in een variabele Variant is opgenomen.