Istruzione ReDim

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.