Como obter o comprimento de um array usando vba?
No VBA, obter o comprimento de um array significa contar o número de elementos que você possui nesse array. Para isso você precisa conhecer o elemento mais baixo e o elemento mais alto. Então, para conseguir isso, você pode usar as funções UBOUND e LBOUND que retornam o limite superior e o limite inferior, respectivamente.
Além disso, você também pode usar COUNTA, que é uma função de planilha. E neste tutorial veremos os dois métodos para que você possa utilizar qualquer um deles conforme sua conveniência.
Etapas para obter o tamanho de um array
Aqui temos uma tabela que contém uma lista de meses e a quantidade de vendas de cada mês.
- Certifique-se de ter uma tabela declarada corretamente com linhas e colunas.
- Depois disso, mais duas variáveis (porque temos um array bidimensional) para armazenar os limites do array.
- Então você precisa usar uma fórmula na qual você precisa usar a função Ubound para obter o limite superior e depois Lbound para obter o limite inferior da matriz.
- Como você tem uma matriz bidimensional, ambos precisam estar vinculados às dimensões e definir esse valor nas variáveis.
- No final, multiplique os comprimentos obtidos de Ubound e Lbound como o limite superior e inferior.
Aqui está o código completo.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2
Observação: você deve estar se perguntando se temos um total de 13 linhas na tabela que compartilhei com você no início do artigo.
Mas usamos uma tabela de 13 linhas porque a primeira linha era um título. E aqui usamos uma função IF STATEMENT e ISEMPTY para verificar se o array declarado não contém nenhum elemento.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."
Usando COUNTA para obter o comprimento do array
Como você sabe, um array é um conjunto de elementos estruturados de forma unidimensional ou multidimensional e você pode usar a função COUNTA ( função de planilha ) para contar esses elementos de uma só vez.
No código a seguir, você usou o mesmo array declarado anteriormente e, em seguida, usou uma variável para armazenar o número de elementos retornados pela função.
E como você pode ver, o resultado retornado é 24, que é o número total de elementos que temos no array.
Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount
Há uma coisa que você precisa cuidar: esse método não será ideal para usar em todas as situações, por isso é sempre bom usar o método que discutimos anteriormente.
Você também pode escrever código para verificar primeiro se o array declarado não está vazio.
Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."