¿cómo crear una tabla dinámica en vba?
Una matriz dinámica es algo en lo que puede cambiar el tamaño de la matriz y agregarle más valor mientras ejecuta el código. En este tutorial, exploraremos formas de escribir código en las que puedes cambiar el tamaño y agregar más elementos.
Crear una tabla dinámica en VBA
- Primero, declara una matriz con su nombre.
- Después de eso, la cantidad de elementos dejó los paréntesis vacíos.
- Ahora use la instrucción ReDim.
- Al final, especifique la cantidad de elementos que desea agregar a la matriz.
Dim myArray() As String ReDim myArray(5)
No olvide leer este artículo de Joshua sobre el rendimiento de los arreglos fijos y dinámicos.
Matriz multidimensional dinámica
El ejemplo que usamos fue una matriz unidimensional y de la misma manera, también usa la declaración ReDim para crear matrices dinámicas multidimensionales.
Dim myArray() As String ReDim myArray(5, 8)
Agregar un nuevo elemento a una matriz dinámica en VBA
Una matriz dinámica no tendrá sentido si no puede agregarle un nuevo elemento. En el siguiente ejemplo, veremos cómo agregar nuevos elementos una vez que haya redefinido la cantidad de elementos en una matriz.
'declaring array with no element. '--------------------- Dim iNames() As String '--------------------- 'declaring variables to store counter _ 'and elements from the range. '---------------------- Dim iCount As Integer Dim iElement As Integer '---------------------- 'get the last row number to decide the _ 'number of elements for the array. '------------------------------------ iCount = Range("A1").End(xlDown).Row '------------------------------------ 're-defining the elements for the array. '------------------- ReDim iNames(iCount) '------------------- 'using a for loop to add elements in the array 'from the range starting from cell A1 '-------------------------------------------------- For iElement = 1 To iCount iNames(iElement - 1) = Cells(iElement, 1).Value Next iElement '-------------------------------------------------- 'print all the elements from the 'to the immediate window '-------------------- Debug.Print iNames(0) Debug.Print iNames(1) Debug.Print iNames(2) '--------------------
Entendamos este código paso a paso.
- En el primer paso, declaró una matriz con el nombre «myArray».
- Después de eso, tiene dos variables para guardar los valores del contador para el bucle que deberá usar más adelante en el código para obtener valores del rango y agregar esos valores como elementos a la matriz.
- Luego tienes una línea de código para obtener la última fila del rango que te ayuda a saber qué elementos necesitas agregar a la matriz.
- En el cuarto paso, utilizó la instrucción ReDim para redefinir los elementos de la matriz utilizando el último número de fila obtenido en el paso anterior.
- Luego tienes FOR LOOP (Para siguiente) que recorre el rango a partir de la celda A1, toma valores de allí y los agrega como elementos a la matriz uno por uno.
- Al final, tiene la declaración Debug.Print para imprimir todos los elementos en la ventana inmediata .
Y cuando agrego un nuevo valor al rango y ejecuto el código nuevamente, automáticamente agrega ese elemento a la matriz y lo imprime en la ventana inmediata .