Este tutorial demonstrará como criar e usar matrizes de objetos no VBA.
No VBA, os Arrays são variáveis que armazenam vários valores. Você pode armazenar objetos VBA em matrizes da mesma maneira que armazenaria quaisquer outros dados.
Declarando o Object Array
Neste exemplo, declararemos uma matriz de planilhas VBA:
1 | Dim arWks (3) como planilha |
Preenchendo uma matriz de objeto estático
Declare o Object Array como Static, e então você pode preencher o array com as planilhas que você selecionar em sua pasta de trabalho.
12345678 | Sub TestObjArray ()'define a matriz como uma matriz de planilhaDim arWks (1 a 3) como planilha'adicionar 3 folhas na matrizdefinir arWks (1) = Folhas (1)definir arWks (2) = Folhas (2)Definir arWks (3) = Folhas (3)End Sub |
Preenchendo uma matriz de objeto dinâmico
Você pode declarar o Object Array como Dynamic e contar as folhas na pasta de trabalho antes de atribuir o tamanho do array ao Object Array.
1234567891011121314 | Sub TestObjArray ()'define a matriz como uma matriz de planilhaDim arWks () como planilha'contar quantas planilhas no arquivo, e re-dim o arrayDim n As IntegerDim i As Integer'contar as folhas e menos um para definir os limites para a matrizn = Application.Sheets.Count - 1ReDim arWks (n)'preencha a matriz da planilha com todas as planilhas da pasta de trabalhoPara i = LBound (arWks) para UBound (arWks)Definir arWks (i) = ActiveWorkbook.heets (i + 1)Proximo euEnd Sub |
No exemplo acima, primeiro declaramos a matriz da planilha. Em seguida, contamos o número de folhas na pasta de trabalho e atribuímos esse valor menos um ao UBound da Matriz. Isso se deve ao fato de que o LBound do Array começa como 0. Finalmente, fazemos um loop pelas folhas e adicionamos cada folha ao array.
Usando o Object Array no código VBA
Depois de preencher o array Worksheet, podemos usar o VBA para percorrer o array.
123456789101112131415161718 | Sub TestObjArray ()'define a matriz como uma matriz de planilhaDim arWks () como planilha'contar quantas planilhas no arquivo, e re-dim o arrayDim n As IntegerDim i As Integer'contar as folhas e menos um para definir os limites para a matrizn = Application.Sheets.Count - 1ReDim arWks (n)'preencha a matriz da planilha com todas as planilhas da pasta de trabalhoPara i = LBound (arWks) para UBound (arWks)Definir arWks (i) = ActiveWorkbook.heets (i + 1)Proximo eu'fazer algo em cada folha do arrayPara i = LBound (arWks) para UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = TrueProximo euEnd Sub |
No exemplo acima, percorremos a matriz e colocamos em negrito a primeira linha de cada folha na matriz.