VBA Dynamic Array (Redim & Redim Preserve)

Questo tutorial dimostrerà come utilizzare gli array dinamici (redim e redim preservare) in VBA.

Array dinamico

Array dinamici sono array che possono cambiare dimensione (al contrario di array statici, che sono statici).

Per dichiarare un array dinamico, dichiari l'array, ma ometti la dimensione dell'array:

1 Dim strNames() As String

Quindi, prima di poter assegnare valori all'array, è necessario utilizzare l'istruzione ReDim per impostare l'array alla dimensione desiderata:

1 ReDim strNames (da 1 a 3)

Ora, ogni volta che vuoi modificare la dimensione dell'array, usa semplicemente ReDim (o ReDim Preserve come impareremo di seguito).

Array di varianti dinamiche

Nota: gli array varianti sono leggermente diversi. Con gli array varianti, non è necessario impostare la dimensione dell'array con ReDim prima di assegnare i valori.

12345678 Sub TestArray()'dichiarare la variabileDim varNames() come variante'popola l'arrayvarNames() = Array("Fred", "Wilma", "Barney", "Betty")'restituire i valoriMsgBox Join(varNames, ",")Fine sottotitolo

Redim contro Redim Preserve

Il ReDim l'istruzione ridimensiona un array, radura tutti i valori esistenti.

Il ReDim Preserve l'istruzione ridimensiona un array, mantenendo ("preservare") tutti i valori esistenti.

Usando ReDim

In pratica, il ridimensionamento di un array con ReDim si presenta così:

123456789101112 Sub TestReDim()'dichiarare l'array di stringheDim strNames() As String'ridimensiona l'array di stringhe per poter contenere 3 valoriReDim strNames (da 1 a 3)'popola l'array con 3 nomistrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'mostra il risultato nella finestra immediataDebug.Print Join(strNames, vbCrLf)Fine sottotitolo

Utilizzo di ReDim Preserve

In questo esempio, useremo ReDim per impostare l'array dinamico iniziale e poi ReDim Preserve per ridimensionare l'array, mantenendo i valori originali:

1234567891011121314151617 Sub TestReDim()'dichiarare l'array di stringheDim strNames() As String'ridimensiona l'array di stringhe per poter contenere 3 valoriReDim strNames (da 1 a 3)'popola l'arraystrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'mostra il risultato nella finestra immediataDebug.Print Join(strNames, vbCrLf)'redim ma preserva i datiReDim Preserve strNames (da 1 a 4)strNames(4) = "Fred"'mostra il risultato nella finestra immediataDebug.Print Join(strNames, vbCrLf)Fine sottotitolo

Se non usi il CONSERVA istruzione, si perderebbero i dati che erano stati precedentemente nell'array.

Nella finestra immediatamente sopra, l'array ha popolato Mel, Steve e Bob. Quando è stato nuovamente dichiarato, ha rimosso quei valori e ha restituito 3 valori vuoti e quindi il valore "Fred". Ciò è dovuto al CONSERVA dichiarazione omessa.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave