Matriz de retorno de función VBA

Este artículo demostrará cómo devolver una matriz utilizando una función VBA.

Matriz de retorno de función VBA

Al usar funciones para devolver matrices, recomiendo encarecidamente declarar matrices con variante de tipo:

123 Función ReturnArray () como varianteFunción final

Matrices variantes son más fáciles de trabajar. El tamaño de la matriz se vuelve menos preocupante.

Ejemplos de matriz de retorno de función

A continuación, se muestra un ejemplo de una función que devuelve una matriz:

1234567891011121314151617181920212223242526272829 Función ReturnArray () como varianteDim tempArr como variante'Crear nueva matriz de temperaturaREDUCIR TEMPERATURA (1 A 3, 1 A 2)'Asignar valores de matriztempArr (1, 1) = "Steve"tempArr (1, 2) = "Johnson"tempArr (2, 1) = "Ryan"tempArr (2, 2) = "Johnson"tempArr (3, 1) = "Andrew"tempArr (3, 2) = "Scott"'Matriz de salidaReturnArray = tempArrFunción finalSub TestTransposeArray ()Atenuar outputArr como varianteFunción de devolución de llamadaoutputArr = ReturnArray ()'Salida de pruebaMsgBox outputArr (2, 1)End Sub

Observe que declaramos las matrices con tipo de datos = variante para evitar problemas de tamaño.

Este ejemplo toma una matriz como entrada, transpone la matriz y genera la nueva matriz transpuesta:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Función TransposeArray (MyArray como variante) como varianteDim x tan largo, y tan largoDim maxX tan largo, minX tan largoDim maxY As Long, minY As LongDim tempArr como variante'Obtener límites superiores e inferioresmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Crear nueva matriz de temperaturaReDim tempArr (minX a maxX, minY a maxX)'Transponer la matrizPara x = minX a maxXPara y = minY a maxYtempArr (y, x) = MyArray (x, y)Próximo añoSiguiente x'Matriz de salidaTransposeArray = tempArrFunción finalSub TestTransposeArray ()Dim testArr (1 a 3, 1 a 2) como varianteAtenuar outputArr como variante'Asignar valores de matriztestArr (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ónoutputArr = TransposeArray (testArr)'Salida de pruebaMsgBox outputArr (2, 1)End Sub
wave wave wave wave wave