Je voudrais ajouter une valeur à la fin d'un tableau VBA. Comment puis-je faire ceci? Je n'ai pas pu trouver un simple exemple en ligne. Voici un pseudocode montrant ce que j'aimerais pouvoir faire.
Public Function toArray(range As range)
Dim arr() As Variant
For Each a In range.Cells
'how to add dynamically the value to end and increase the array?
arr(arr.count) = a.Value 'pseudo code
Next
toArray= Join(arr, ",")
End Function
microsoft-excel
vba
megloff
la source
la source
arr = Range.Value
?Réponses:
Essayez ceci [EDITED]:
la source
UBound(arr)
exige quiarr
est initialisé avec une certaine dimension, par exemple,Dim arr(1) As Variant
mais plus tard, ilReDim Preserve
échoue et dit que le tableau est déjà dimensionné? en d'autres termes, vous ne pouvez pas redimiter un tableau en VBA?Collection
et le convertir ensuite en tableau. D'autres suggestions?UBound(arr)
nécessite un tableau déjà dimensionné. Eh bien, il semble que je doive utiliser une collection à la place. Merci quand mêmeJ'ai résolu le problème en utilisant une collection et en la copiant ensuite dans un tableau.
la source
Voici comment je le fais, en utilisant une variable Variant (array):
Ou, si vous avez réellement besoin d'un tableau de variantes (pour passer à une propriété comme Shapes.Range, par exemple), vous pouvez le faire de cette façon:
la source
Si votre plage est un vecteur unique et, si dans une colonne, le nombre de lignes est inférieur à 16 384, vous pouvez utiliser le code suivant:
la source
THX. Faire de même avec 2 fonctions si cela peut aider d'autres noobs comme moi:
Collection
Réseau 1D:
Usage
la source
La réponse se trouve dans la réponse acceptée en (sans le problème ReDim):
/programming/12663879/adding-values-to-variable-array-vba
En résumé:
la source
la source