Dichiara le variabili di array dinamiche e alloca o rialloca lo spazio di archiviazione a livello di routine.
Sintassi
ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .
Argomenti:
Preserve: conserva i dati in un array esistente quando si modifica l'ordine di grandezza dell'ultima dimensione.
varname: nome della variabile; utilizza le convenzioni di denominazione delle variabili standard.
subscripts: dimensioni di una variabile di array.
Note
L'istruzione ReDim viene utilizzata per dimensionare o ridimensionare un array dinamico già dichiarato formalmente utilizzando un'istruzione Private, Public o Dim con parentesi vuote (senza argomenti subscripts per la dimensione). È possibile utilizzare ripetutamente l'istruzione ReDim per modificare il numero di elementi e dimensioni in un array.
Se si utilizza la parola chiave Preserve, è possibile ridimensionare solo l'ultima dimensione dell'array; non è possibile modificare il numero di dimensioni. Ad esempio, se l'array include una sola dimensione, è possibile ridimensionare tale dimensione perché è l'ultima e unica dimensione. Tuttavia, se l'array include due o più dimensioni, è possibile modificare l'ordine di grandezza solo dell'ultima dimensione e mantenere comunque il contenuto dell'array.
Nell'esempio seguente viene mostrato come è possibile aumentare le dimensioni dell'ultima dimensione di un array dinamico senza cancellare i dati esistenti in esso contenuti.
Esempio 1: uso di base di ReDim (senza conservazione)
Dim arr() ' Initially, create an array with 3 elements ReDim arr(2) ' Array can hold 3 elements (0, 1, 2) ' Assign values to the array arr(0) = "Apple" arr(1) = "Banana" arr(2) = "Cherry" ' Now, resize the array to hold 5 elements ReDim arr(4) ' Array can hold 5 elements (0, 1, 2, 3, 4) 'If you try to access indexes 0, 1, 2 there will be no values. ' The previous values are lost because we did not use Preserve arr(3) = "Date" arr(4) = "Elderberry"
Esempio 2: uso di ReDim Preserve per mantenere i dati esistenti
Dim arr() ' Initially, create an array with 3 elements ReDim arr(2) ' Array can hold 3 elements (0, 1, 2) ' Assign values to the array arr(0) = "Apple" arr(1) = "Banana" arr(2) = "Cherry" ' Now, resize the array to hold 5 elements, keeping the existing data ReDim Preserve arr(4) ' Array can hold 5 elements (0, 1, 2, 3, 4) ' The previous values are preserved, so we can add more elements arr(3) = "Date" arr(4) = "Elderberry"
Attenzione: se si riduce la dimensione originale di un array, i dati negli elementi eliminati andranno persi.
Quando le variabili vengono inizializzate, una variabile numerica viene inizializzata come 0 e una variabile stringa viene inizializzata come una stringa di lunghezza zero (""). Prima di poterla utilizzare, a una variabile che fa riferimento a un oggetto deve essere assegnato un oggetto esistente utilizzando l'istruzione Set. Finché è assegnata a un oggetto, la variabile di oggetto dichiarata ha il valore speciale Nothing.