VBA – Funciones para devolver una Matriz

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 4, 2022

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! vba save as


Learn More!
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples