VBA ReDim

Istruzione ReDim VBA di Excel

L' istruzione VBA Redim è simile all'istruzione dim ma la differenza è che viene utilizzata per archiviare o allocare più spazio di archiviazione o ridurre lo spazio di archiviazione che una variabile o un array ha con sé, ora ci sono due aspetti importanti usati con l'istruzione Preserve, se si usa preservare con questa istruzione, allora si crea un nuovo array con dimensioni differenti e se non si usa preservare con questa istruzione allora cambia solo la dimensione dell'array della variabile corrente.

Gli array sono una parte importante della codifica VBA. Usando gli array possiamo memorizzare più di un valore nella stessa variabile che abbiamo definito. Analogamente a come dichiariamo la variabile utilizzando la parola "Dim", allo stesso modo dobbiamo dichiarare il nome dell'array utilizzando anche "Dim".

Per dichiarare il nome dell'array, dobbiamo prima identificare il tipo di array che andremo a definire. Negli array, abbiamo 5 tipi.

  1. Static Array
  2. Dynamic Array
  3. Un array dimensionale
  4. Array bidimensionale
  5. Array multidimensionale

Nell'array statico in Excel, decideremo il valore inferiore e il valore superiore dell'array con largo anticipo durante la dichiarazione della variabile. Ad esempio, guarda l'esempio seguente.

Codice:

 Sub ReDim_Example1 () Dim MyArray (da 1 a 5) As String End Sub 

Qui MyArray è il nome dell'array che può contenere il valore da 1 a 5. MyArray può contenere 5 risultati diversi come quello sotto.

Codice:

 Sub ReDim_Example1 () Dim MyArray (da 1 a 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = "Bella giornata" End Sub 

Array dinamico con istruzione ReDim

Ma in array dinamico questo non è il caso, non decideremo il valore inferiore e il valore superiore con largo anticipo, piuttosto definiremo semplicemente il nome dell'array e assegneremo il tipo di dati.

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Per rendere dinamico il nome dell'array, dobbiamo prima dichiararlo con la parola "Dim" ma non decidere la dimensione dell'array con largo anticipo. Diamo solo un nome a un array con valori vuoti all'interno delle parentesi (). Quando l'array non include la dimensione, viene trattato come un array dinamico.

Dim MyArray () As String

Nel momento in cui menzioni la dimensione dell'array tra parentesi, diventa un array statico. Dim MyArray (da 1 a 5) As String

Nell'array dinamico, ridimensioniamo sempre la dimensione dell'array utilizzando la parola "ReDim" nella riga successiva del codice.

ReDim MyArray (da 1 a 6) As String

Qualsiasi valore memorizzato nel nome dell'array nei passaggi precedenti, ovvero utilizzando l'istruzione "Dim", è nullo e la dimensione dichiarata utilizzando "ReDim" diventa la nuova dimensione dell'array.

Esempi di utilizzo dell'istruzione Redim VBA

Puoi scaricare questo modello Excel VBA ReDim qui - Modello Excel VBA ReDim

Esempio 1

Dai un'occhiata all'esempio di utilizzo pratico dell'istruzione "ReDim". Seguire i passaggi seguenti per applicare "ReDim".

Passaggio 1: creare prima un nome di macro.

Passaggio 2: dichiarare il nome di un array come stringa.

Codice:

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Passaggio 3: ora usa la parola "Redim" e assegna la dimensione dell'array.

Codice:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (da 1 a 3) End Sub 

Passaggio 4: ora il nome dell'array "MyArray" può contenere fino a 3 valori qui. Assegna il valore a questi 3 array come quello sotto.

Codice:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (da 1 a 3) MyArray (1) = "Welcome" MyArray (2) = "a" MyArray (3) = "VBA" End Sub 

Quindi, il primo array è uguale alla parola "Benvenuto", il secondo array è uguale alla parola "a" e il terzo array è uguale alla parola "VBA".

Passaggio 5: ora memorizza questi valori di matrice nelle celle.

Codice:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub 

Passaggio 6: se esegui questo codice, dovremmo avere questi valori rispettivamente nelle celle A1, B1 e C1.

Esempio n. 2: ridimensionare la dimensione dell'array ricordando i vecchi valori.

Una volta assegnati i valori al nome dell'array, possiamo anche ridimensionare in qualsiasi momento della procedura utilizzando la parola "ReDim Preserve".

Supponiamo di aver già dichiarato un nome di array e di aver assegnato valori a quel nome di array come quello sotto.

Ora si desidera aumentare la lunghezza dell'array di 2, ad esempio 5. In questo caso, possiamo usare la parola VBA "ReDim Preserve" per ridimensionare la lunghezza dell'array per ricordare anche i vecchi valori.

Codice:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "a" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Intervallo "carattere 1" ("A1"). Valore = Intervallo MyArray (1) ("B1"). Valore = Intervallo MyArray (2) ("C1"). Valore = Intervallo MyArray (3) ("D1"). Valore = MyArray (4) End Sub 

Ora possiamo assegnare altri due valori all'array.

Codice:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "a" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Intervallo "carattere 1" ("A1"). Valore = Intervallo MyArray (1) ("B1"). Valore = Intervallo MyArray (2) ("C1"). Valore = Intervallo MyArray (3) ("D1"). Valore = MyArray (4) End Sub 

Ora memorizza questi valori nelle celle.

Codice:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "a" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Intervallo "carattere 1" ("A1"). Valore = Intervallo MyArray (1) ("B1"). Valore = Intervallo MyArray (2) ("C1"). Valore = Intervallo MyArray (3) ("D1"). Valore = MyArray (4) End Sub 

Ora esegui la macro e guarda cosa succede

Quindi abbiamo la nuova parola nella cella D1.

Il motivo per cui dobbiamo usare la parola "preservare" perché array dovrebbe ricordare i vecchi valori di array nella procedura.

Nel momento in cui ignori la parola "conserva", non ricorderà i vecchi valori.

Cose da ricordare qui

  • ReDim can only hold the last value of the array, not the many values. For example, we cannot use this code “ReDim Preserve MyArray(4 to 5)”, this will throw the error.
  • We cannot ReDim static arrays. The moment you assign the size of the array inside the parenthesis it becomes a static array.
  • Using ReDim we cannot change the data type. The array can hold whatever the data type we have assigned while declaring the array.