Este tutorial demostrará cómo crear y usar matrices de objetos en VBA.
En VBA, las matrices son variables que almacenan múltiples valores. Puede almacenar objetos VBA en matrices de la misma manera que almacenaría cualquier otro dato.
Declaración de la matriz de objetos
En este ejemplo, declararemos una matriz de hojas de trabajo de VBA:
1 | Dim arWks (3) como hoja de trabajo |
Llenado de una matriz de objetos estáticos
Declare la matriz de objetos como estática y luego puede completar la matriz con las hojas que seleccione de su libro de trabajo.
12345678 | Sub TestObjArray ()'define la matriz como una matriz de hoja de trabajoDim arWks (1 a 3) como hoja de trabajo'agregue 3 hojas en la matrizset arWks (1) = Sheets (1)set arWks (2) = Sheets (2)Set arWks (3) = Sheets (3)End Sub |
Poblando una matriz de objetos dinámicos
Puede declarar la matriz de objetos como dinámica y luego contar las hojas en el libro de trabajo antes de asignar el tamaño de la matriz a la matriz de objetos.
1234567891011121314 | Sub TestObjArray ()'define la matriz como una matriz de hoja de trabajoDim arWks () como hoja de trabajo'cuenta cuántas hojas de trabajo hay en el archivo y vuelve a atenuar la matrizDim n como enteroDim i como entero'cuenta las hojas y menos uno para establecer los límites de la matrizn = Application.Sheets.Count - 1REDUCIR LAS ARCAS (n)'llena la matriz de la hoja de trabajo con todas las hojas del libro de trabajoPara i = LBound (arWks) a UBound (arWks)Establecer arWks (i) = ActiveWorkbook.Sheets (i + 1)Siguiente yoEnd Sub |
En el ejemplo anterior, primero declaramos la matriz de hoja de trabajo. Luego contamos el número de hojas en el libro de trabajo y asignamos ese valor menos uno al UBound del Array. Esto se debe al hecho de que el LBound de la matriz comienza como 0. Finalmente, recorremos las hojas y agregamos cada hoja a la matriz.
Usando la matriz de objetos en el código VBA
Una vez que hayamos llenado la matriz de la hoja de trabajo, podemos usar VBA para recorrer la matriz.
123456789101112131415161718 | Sub TestObjArray ()'define la matriz como una matriz de hoja de trabajoDim arWks () como hoja de trabajo'cuenta cuántas hojas de trabajo hay en el archivo y vuelve a atenuar la matrizDim n como enteroDim i como entero'cuenta las hojas y menos uno para establecer los límites de la matrizn = Application.Sheets.Count - 1REDUCIR LAS ARCAS (n)'llena la matriz de la hoja de trabajo con todas las hojas del libro de trabajoPara i = LBound (arWks) a UBound (arWks)Establecer arWks (i) = ActiveWorkbook.Sheets (i + 1)Siguiente yo'haz algo en cada hoja de la matrizPara i = LBound (arWks) a UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = TrueSiguiente yoEnd Sub |
En el ejemplo anterior, recorremos la matriz y ponemos en negrita la primera fila de cada hoja de la matriz.