Tabla de contenido
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 |