VBA – Matriz de Objetos
In this Article
Este tutorial mostrará cómo crear y utilizar Array de Objetos en VBA.
En VBA, los Arrays son variables que almacenan múltiples valores. Puedes almacenar Objetos VBA en arrays de la misma manera que almacenarías cualquier otro dato.
Declarando el Array de Objetos
En este ejemplo, declararemos un array de hojas de trabajo VBA:
Dim arWks(3) As Worksheet
Rellenar un Array Estático de Objetos
Declare que el Array de Objetos es Estático, y luego puede llenar dicho Array con las hojas que seleccione de su libro de trabajo.
Sub TestObjArray()
'definir el array como array de hoja de cálculo
Dim arWks(1 To 3) As Worksheet
'añade 3 hojas al array
Set arWks(1) = Sheets(1)
Set arWks(2) = Sheets(2)
Set arWks(3) = Sheets(3)
End Sub
Rellenar una Array de Objetos Dinámica
Puede declarar el Array de Objetos como Dinámico, y luego contar las hojas en el libro de trabajo antes de asignar el tamaño del Array a la Array de Objetos.
Sub TestObjArray()
'definir el array como un array de hoja de trabajo
Dim arWks() As Worksheet
'cuenta cuántas hojas de cálculo hay en el archivo y redimensiona el array
Dim n As Integer
Dim i As Integer
'cuente las hojas y reste una para establecer los límites del array
n = Application.Sheets.Count - 1
ReDim arWks(n)
'llene el array de hojas de trabajo con todas las hojas del libro de trabajo
For i = LBound(arWks) to UBound(arWks)
Set arWks(i) = ActiveWorkbook.Sheets(i + 1)
Next i
End Sub
En el ejemplo anterior, primero declaramos la Matriz de Hojas 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 es debido al hecho de que el LBound de la matriz comienza como 0. Por último, hacemos un bucle a través de las hojas y añadimos cada hoja a la matriz.
Utilizando el Array de Objetos en Código VBA
Una vez que hemos poblado el arreglo de hojas de trabajo, podemos utilizar VBA para recorrer el arreglo.
Sub TestObjArray()
'definir el array como un array de hoja de trabajo
Dim arWks() As Worksheet
'cuenta cuántas hojas de cálculo hay en el archivo y redimensiona el array
Dim n As Integer
Dim i As Integer
'cuente las hojas y reste una para establecer los límites del array
n = Application.Sheets.Count - 1
ReDim arWks(n)
'llene el array de hojas de trabajo con todas las hojas del libro de trabajo
For i = LBound(arWks) to UBound(arWks)
Set arWks(i) = ActiveWorkbook.Sheets(i + 1)
Next i
'hacer algo con cada hoja de la matriz
For i = LBound(arWks) to UBound(arWks)
arWks(i).Range("A1:H1").Font.Bold = True
Next i
End Sub
En el ejemplo anterior, hacemos un bucle a través del Array y Doblamos la primera fila de cada hoja en la matriz.