Ubound e Lbound no VBA – Como Trabalhar com Matrizes ou Arrays no VBA
Você já ouviu falar em Ubound e Lbound no VBA? Nessa aula eu vou te mostrar como trabalhar com matrizes de uma forma diferente.
UBound e LBound no VBA retornam, respectivamente, o maior e o menor índice de uma matriz (array): UBound(minhaMatriz) dá a última posição e LBound(minhaMatriz), a primeira. Juntas, elas permitem percorrer qualquer array com segurança, sem precisar saber o tamanho de antemão.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso Canal do YouTube para mais vídeos!
O que você aprende neste vídeo
Resposta rápida: A aula mostra como UBound e LBound devolvem os limites superior e inferior de uma matriz no VBA. Você sai sabendo carregar 200 nomes de um intervalo numa matriz Variant, percorrê-la com For do limite inferior ao superior e gravar o índice de cada item na planilha. Matriz vinda de Range sempre começa em 1.
Neste vídeo (12 min):
- 1:00 - Planilha de exemplo com 200 nomes de
A2aA201e uma coluna vazia para receber o índice de cada um - 2:00 - Declaração da matriz com
Dim MatrizNomes As Variant, que aceita texto, número e data - 3:30 - Matriz abastecida de uma vez com
MatrizNomes = Range("A2:A201").Value - 4:40 - Janela Variáveis Locais mostra a matriz como
Variant(1 To 200, 1 To 1): 200 linhas e 1 coluna - 6:20 -
Debug.Printe a Janela de Verificação Imediata, onde?MatrizNomes(1, 1)devolve o primeiro nome - 7:05 -
Debug.Print UBound(MatrizNomes)devolve 200 eLBound(MatrizNomes)devolve 1, rodando linha a linha comF8 - 8:10 - Laço
For i = LBound(MatrizNomes) To UBound(MatrizNomes), que percorre a matriz inteira sem número fixo no código - 8:45 -
MsgBox MatrizNomes(i, 1)exibindo cada nome da matriz, sempre na coluna 1 - 9:25 - Matriz carregada de um intervalo começa sempre em 1 e tem uma coluna; declarada de outro jeito, pode começar em 0 ou em outro número
- 11:05 -
Cells(i + 1, 2).Value = igrava o índice na coluna B pulando o cabeçalho, eF5preenche as 200 linhas
Trechos do vídeo:
UBounddevolve o maior índice de uma matriz eLBoundo menor; com os dois, o laço percorre todos os itens sem conhecer o tamanho de antemão- Uma variável comum guarda um único valor, enquanto uma matriz armazena várias informações dentro de uma só variável
- Atribuir
Range("A2:A201").Valuea uma variávelVariantcria uma matriz de 200 linhas por 1 coluna, e por isso cada item é lido com dois índices, comoMatrizNomes(i, 1) - Uma matriz não precisa começar em 1: dependendo de como é declarada, ela começa em 0 ou em outro número, e usar
LBoundno início do laço evita pular ou estourar posições
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Ubound e Lbound no VBA
Fala impressionadores! Hoje vamos aprender mais uma ferramenta que será um diferencial no seu trabalho. Você já ouviu falar do Ubound e Lbound?
O que significa Lbound? Ele nada mais é do que o limite inferior da matriz (Lower bound), ou seja, é onde começa a matriz.
E o que significa Ubound? É o limite superior da matriz (Upper bound), é onde termina a matriz.
Mas porque isso é importante? Imagine que você não saiba a quantidade de itens de uma lista, como você faria para utilizar uma estrutura de repetição se esses valores podem ser variáveis?
Basta utilizar o Lbound e Ubound dentro da estrutura do For no VBA, dessa forma você vai ter a informação correta de onde começa e onde termina.
E aí, vamos aprender a utilizar o Lbound e Ubound, como percorrer informações com VBA e ainda como pegar o índice de cada informação?
No nosso material didático temos uma lista com 200 nomes, vamos ensinar aqui o passo a passo para enumerar essa lista programando pelo VBA, de 1 a 200 como mostra a imagem abaixo:

Ambiente VBA -> Alt + f11

Vamos usar a função uboundVBA() ela nada mais é do que um meio de descobrirmos informações sobre a nossa matriz. Iniciada a matriz, agora colocaremos os valores que ela irá receber.

Agora temos uma matriz com os 200 nomes nela, precisamos sempre salvar a planilha, para isso clique no atalho control + B.
Como podemos ver quais informações que estão dentro da nossa matriz?
Vamos clicar em exibir -> variáveis locais -> vai aparecer a janela da próxima imagem:
Clicando nela temos a quantidade de linhas e colunas da nossa matriz, além do que está dentro de cada linha.

Agora vamos usar o nosso Ubound para saber o limite superior da nossa matriz e vamos colocar o Debug.Print para conseguir visualizar as informações enquanto trabalhamos no VBA.

Nosso limite superior é 200, então está indicando corretamente.

Agora vamos verificar o limite inferior usando o LBound.

O limite inferior é 1

E por que isso é relevante?
Bom, nem sempre vamos saber os limites da nossa matriz, e para fazer uma estrutura de repetição na nossa matriz essas informações são importantes.
Vamos usar a estrutura do FOR por exemplo:

Nossa estrutura de repetição está percorrendo a matriz do limite superior até o seu limite inferior, a cada linha ele vai mostrar na tela o nome contido na célula, para isso nós usamos o MsgBox na estrutura.
Agora que já sabemos como funciona, vamos completar a nossa matriz do início da aula?

Utilizando o código acima, a cada vez que clicarmos no botão F8 do nosso teclado ele vai preencher com os números a linha, começando pelo 1 na segunda linha da tabela abaixo do sinal de #.
Podemos ir completando com o F8 ou usar o F5 para completar toda a tabela.

Perguntas frequentes
1. O que a função UBound retorna?
O índice mais alto de uma dimensão da matriz — não a quantidade de elementos. Num array de 0 a 9, UBound retorna 9 (e são 10 elementos). Em matrizes multidimensionais, o segundo argumento indica a dimensão: UBound(m, 2) dá o limite das colunas.
2. Para que serve o LBound?
Para descobrir o índice inicial da matriz, que nem sempre é zero: arrays declarados com intervalo (Dim m(5 To 20)) ou com Option Base 1 começam em outro valor. Usar LBound no início do loop garante que nenhum elemento fique de fora.
3. Como percorrer um array com UBound e LBound?
Com um For clássico: For i = LBound(m) To UBound(m) ... Next i. O loop se adapta sozinho a qualquer tamanho e base do array — o mesmo código funciona para 10 ou 10 mil posições, sem números fixos espalhados pela macro.
4. Por que meu array começa em 0 no VBA?
Porque a base padrão do VBA é zero: Dim m(9) cria posições de 0 a 9. Dá para mudar com Option Base 1 no topo do módulo ou declarando o intervalo explícito (Dim m(1 To 10)) — e é justamente essa variação que torna o LBound tão importante.
Conclusão – VBA Ubound e Lbound
Nesta aula eu quis te mostrar como funciona o Ubound e Lbound no VBA, esta, é uma estrutura que te indica os limites da matriz e que pode ser bastante útil em estruturas de repetição e códigos mais robustos.
É mais uma ferramenta importante para você ter como opção, essas ferramentas pouco usadas, mas bastante úteis fazem diferença na hora de fazer um trabalho que exige maior conhecimento e diferencial.
Espero que tenham gostado! Até a próxima!
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!

