Me gustaría agregar un valor al final de una matriz de VBA. ¿Cómo puedo hacer esto? No pude encontrar un ejemplo simple en línea. Aquí hay un pseudocódigo que muestra lo que me gustaría poder hacer.
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
fuente
fuente
arr = Range.Value
?Respuestas:
Prueba esto [EDITADO]:
fuente
UBound(arr)
requisitosarr
se inicializan con alguna dimensión, por ejemplo,Dim arr(1) As Variant
pero luegoReDim Preserve
falla y dice que la matriz ya está dimensionada? con otras palabras, no puedes redimir una matriz en VBA?Collection
y luego convertirlo en una matriz. ¿Cualquier otra sugerencia?UBound(arr)
requiere una matriz ya dimensionada. Bueno, parece que tengo que usar una colección en su lugar. Gracias de todos modosResolví el problema usando una Colección y luego la copié a una matriz.
fuente
Así es como lo hago, usando una variable Variant (array):
O, si realmente necesita una matriz de Variantes (para pasar a una propiedad como Shapes.Range, por ejemplo), puede hacerlo de esta manera:
fuente
Si su rango es un vector único y, si está en una columna, el número de filas es menor que 16,384, puede usar el siguiente código:
fuente
Gracias. Hacer lo mismo con 2 funciones si puede ayudar a otros novatos como yo:
Colección
Matriz 1D:
Uso
fuente
La respuesta está en la respuesta aceptada en (sin el problema ReDim):
/programming/12663879/adding-values-to-variable-array-vba
En resumen:
fuente
fuente