VBA – Funciones para devolver una Matriz
Este artículo demostrará cómo devolver una matriz utilizando una función VBA.
Función VBA para devolver un Array
Cuando se utilizan funciones para devolver arrays, recomiendo encarecidamente declarar los arrays con de tipo Variant:
Function ReturnArray() As Variant
End Function
Los arrays de tipo variante son más fáciles de trabajar. El tamaño de los arrays se vuelve menos preocupante.
Ejemplos de arrays devueltos por funciones
Aquí hay un ejemplo de una función que devuelve un array:
Function devolver_matriz() As Variant
Dim tmpArray As Variant
'Crea un nuevo array temporal
ReDim tmpArray(1 To 3, 1 To 2)
'Asigna los valores de la matriz
tmpArray(1, 1) = "Steve"
tmpArray(1, 2) = "Johnson"
tmpArray(2, 1) = "Ryan"
tmpArray(2, 2) = "Johnson"
tmpArray(3, 1) = "Andrew"
tmpArray(3, 2) = "Scott"
'Matriz de salida
devolver_matriz = tmpArray
End Function
Sub PruebaTransposeArray()
Dim salidaArray As Variant
'Llamar a la función de retorno
salidaArray = devolver_matriz()
'Prueba de salida
MsgBox salidaArray(2, 1)
End Sub
Observa que declaramos los Arrays con tipo de datos = variant para evitar problemas de tamaño. Este ejemplo toma un array como entrada, transpone el array, y saca el nuevo array transpuesto:
Function ArrayTranspuesto(miArray As Variant) As Variant
Dim x As Long, y As Long
Dim maxX As Long, minX As Long
Dim maxY As Long, minY As Long
Dim tempArr As Variant
'obtener los límites superior e inferior
maxX = UBound(miArray, 1)
minX = LBound(miArray, 1)
maxY = UBound(miArray, 2)
minY = LBound(miArray, 2)
'crea una nueva matriz temporal
ReDim tempArr(minX To maxX, minY To maxX)
'transponer la matriz
For x = minX To maxX
For y = minY To maxY
tempArr(y, x) = miArray(x, y)
Next y
Next x
'Array de salida
ArrayTranspuesto = tempArr
End Function
Sub PruebaTransposeArray()
Dim testArr(1 To 3, 1 To 2) As Variant
Dim outputArr As Variant
'Asigna los valores de la matriz
testArr(1, 1) = "Steve"
testArr(1, 2) = "Johnson"
testArr(2, 1) = "Ryan"
testArr(2, 2) = "Johnson"
testArr(3, 1) = "Andrew"
testArr(3, 2) = "Scott"
'Llamar a la función de transposición
outputArr = ArrayTranspuesto(testArr)
'Prueba la salida
MsgBox outputArr(2, 1)
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!