Con esta función muy simple:En VBA, ¿cómo devolver una matriz/o escribir a las celdas usando una función?
Function WriteArray() as Variant
Dim array(0 To 2)
array(0) = "A"
array(1) = "B"
array(2) = "C"
WriteArray = array
End Function
Yo estaba esperando a ver en el resultado de toda la matriz en una hoja de cálculo de Excel, pero ese no es el caso: tengo sólo la primera cadena. Sé que hay un truco para mostrar todo el conjunto en la hoja de cálculo (seleccionando un rango de celdas con la fórmula + F2 + CTRL + MAYÚS + INTRO), pero preferiría que VBA manejara todo.
También traté de usar la variable Application.Caller para escribir directamente en el rango "Caller" pero el código se rompe.
¡Muchas gracias por su ayuda!
EDIT: Aquí es otro código Traté de usar:
Function WriteArray() As Variant
Dim arr(0 To 2)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
WriteArray = arr
Dim StartRow, i As Integer
For i = 0 To UBound(arr)
Range("A" & i).Value = arr(i)
Next
End Function
Se rompe en la línea de "Range (" A "& i) .Value = arr (i)". ¿Mi Excel está roto?
De hecho, esto no funciona, el código de VBA se rompe en "Rango (" A "& i + StartRow) .Value = MyArray (i)" ... ese es mi problema también. ¿Este código funciona en tu Excel? Yo uso Excel 2003. –
Funcionó perfectamente en Excel 2003. Cambie cada "matriz" en su código de inicio a otro nombre de variable que NO sea una palabra reservada, como AbcList o algo por el estilo. – Eric
Aún así, se rompe ... utilizo exactamente este código: WriteArray Función() como variante Dim arr (0 a 2) arr (0) = "A" arr (1) = "B" arr (2) = "C" WriteArray = arr Dim StartRow, i como número entero Para i = 0 Para UBound (arr) Range ("A" + i) .Value = arr (i) Siguiente End Function En "Range (" A "& i) .Value = arr (i)", simplemente sale del código, incluso sin lanzar ningún error ... no tiene sentido para mí :( –