VBA ReDim - Gestisci array dinamici utilizzando VBA ReDim Preserve

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", 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. Array dinamico
  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 Dynamic array, questo non è il caso. Non decideremo con largo anticipo il valore inferiore e quello superiore; piuttosto, definiamo semplicemente il nome dell'array e assegniamo 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 considerato come un array dinamico.

Dim MyArray () As String

Nel momento in cui si menziona 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

Esempio 1

Dai un'occhiata all'esempio di utilizzo pratico dell'istruzione "ReDim". Segui 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 nelle celle A1, B1 e C1, rispettivamente.

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".

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

Il motivo per cui abbiamo bisogno di 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 può contenere solo l'ultimo valore dell'array, non i molti valori. Ad esempio, non possiamo utilizzare questo codice "ReDim Preserve MyArray (da 4 a 5)". Questo genererà l'errore.
  • Non è possibile ReDim array statici. Nel momento in cui si assegna la dimensione dell'array all'interno della parentesi, diventa un array statico.
  • Utilizzando ReDim, non possiamo modificare il tipo di dati. L'array può contenere qualsiasi tipo di dati che abbiamo assegnato durante la dichiarazione dell'array.

Articoli interessanti...