Offset no VBA – O que é e Como Usar Esse Recurso?
Você já conhece o comando Offset no VBA que vai te permitir deslocar células usando o VBA para tornar suas atividades mais fáceis?
O Offset no VBA desloca uma referência de célula a partir de outra: Range('A1').Offset(2, 3) aponta para a célula 2 linhas abaixo e 3 colunas à direita de A1 (D3). É um dos comandos mais úteis das macros, porque permite navegar pela planilha de forma relativa — achar a próxima linha vazia, ler vizinhas e preencher tabelas.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
O que você aprende neste vídeo
Resposta rápida: A aula explica o Offset do VBA, que desloca uma referência de célula por linhas e colunas. Você aprende a apontar células com Range e Cells, conferir valores com Debug.Print, usar números positivos para ir à direita e para baixo e negativos para voltar, e buscar o dado da coluna vizinha na mesma linha.
Neste vídeo (9 min):
- 0:50 - O
Offsetparte de uma célula de referência, como C3, e chega à vizinha da direita, da esquerda ou da linha de cima - 1:40 - Aplicação típica: achado o nome do professor, o curso está uma coluna à direita; achado o curso, o professor está uma coluna à esquerda
- 2:25 - Abrir o editor com
Alt + F11, inserir um módulo e criar a macro, sem espaço no nome da sub - 2:55 - Referenciar a mesma célula com
Range("C3")ouCells(3, 3), linha antes de coluna, e ler o conteúdo com.Value - 4:05 - Exibir o resultado na janela de Verificação imediata com
Debug.Printe rodar a macro comF5 - 5:15 - A regra do sinal: número positivo desloca para a direita e para baixo, negativo para a esquerda e para cima
- 6:00 -
Range("C3").Offset(1, 1)desce uma linha e anda uma coluna, chegando a D4 - 6:35 - Trocar o conteúdo da célula na planilha e rodar de novo para ver o
Offsetler o valor novo - 7:05 -
Offset(-1, -1)volta uma linha e uma coluna, para a célula acima e à esquerda de C3 - 7:40 -
Range("A3").Offset(0, 1)fica na mesma linha e anda uma coluna para mostrar o curso do Alon
Trechos do vídeo:
- O
Offsetrecebe primeiro o número de linhas e depois o de colunas:Offset(1, 1)a partir de C3 leva a D4 - Valores positivos no
Offsetdeslocam para baixo e para a direita, negativos deslocam para cima e para a esquerda, e zero mantém a linha ou a coluna de origem Range("C3")eCells(3, 3)apontam para a mesma célula, e o que se faz com um dos dois se faz também com o outro- Em tabela com dados lado a lado, basta localizar a célula de um nome e aplicar
Offset(0, 1)para ler a informação da coluna vizinha, sem procurar de novo na mesma linha
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala, Impressionadores! Na aula de hoje vamos mostrar o que é offset no VBA!
Vou te mostrar com um exemplo prático como fazer deslocamento no VBA e como você vai usar um código dentro do VBA para conseguir fazer essa “ação”.
Esse é um recurso que vai nos permitir pegar informações de uma célula ou de um conjunto de células! E aí, vamos lá ver como fazer deslocamento de células no VBA?
O que é Offset no VBA?
Resumidamente o comando Offset VBA é chamado quando precisamos fazer o deslocamento de células no VBA.
Por definição ele vai retornar um objeto Intervalo que representa um intervalo (final) que é deslocado do intervalo especificado (original).
O intervalo original vai ser deslocado de linhas e colunas, por padrão, de números positivos, negativos ou zero. Veja:

Portanto, daremos coordenadas para o Excel deslocar o intervalo original e representar o intervalo final.
Importante frisar que os números positivos representam deslocamentos para baixo (no caso de linhas) e para a direita (no caso de colunas).

Exemplo 1: se eu quero ir da célula C3 para a célula D4, vou acrescentar 1 unidade na linha, e acrescentar 1 unidade na coluna. Portanto, tenho que “offsetar” (deslocar) a minha célula de 1 unidade em linhas, e 1 unidade em colunas.
Exemplo 2: se eu quero ir da célula C3 para a célula B2, vou “tirar” 1 unidade na linha, e “tirar” 1 unidade na coluna. Portanto, tenho que “offsetar” (deslocar) a minha célula de subtraindo 1 unidade em linhas, e subtraindo também 1 unidade em colunas.
Como deslocar células no VBA?
Preparamos um exemplo de aula para ajudar vocês a entender como fazer deslocamento no VBA.
No arquivo disponibilizado da aula de hoje, temos uma tabela com os nomes dos professores, e os cursos que eles ministram aqui na Hashtag. Observe:

Com o comando Offset nós podemos retornar o curso que um dos professores ministra, sabendo qual professor é o responsável pelo curso.
O código abaixo vai nos permitir retornar exatamente isso, para o caso do Professor Alon.
Sub offsetNoVBA()
Debug.Print Range("A3").Offset(0, 1).Value
End Sub
Rodando o código, teremos “printado” pela janela imediata o curso ministrado pelo professor Alon: Power BI, que no caso é o que está na mesma linha (0) e na coluna à direita (1).

Traduzindo para coordenadas, a resposta que queremos está a 0 linha e +1 coluna em coordenadas em relação à célula A3.
Perguntas frequentes
1. O que faz o Offset no VBA?
Ele cria uma nova referência deslocada em relação à célula base: o primeiro argumento move linhas, o segundo, colunas. Offset(1, 0) desce uma linha; Offset(0, -1) vai uma coluna à esquerda. A célula original não muda — muda o alvo apontado pelo código.
2. Como usar Offset para achar a próxima linha vazia?
Um padrão clássico: partir do fim da coluna com Cells(Rows.Count, 1).End(xlUp) e aplicar .Offset(1, 0) — a célula logo abaixo do último dado. É assim que macros de cadastro gravam cada novo registro na linha seguinte da base, automaticamente.
3. Offset aceita valores negativos?
Sim. Linhas negativas sobem e colunas negativas vão para a esquerda: Range('C5').Offset(-2, -1) aponta para B3. Só é preciso garantir que o deslocamento não saia da planilha — subir 2 linhas a partir da linha 1 gera erro na execução.
4. Qual a diferença entre Offset e Cells?
O Cells usa coordenadas absolutas da planilha — Cells(3, 2) é sempre B3. O Offset é relativo a uma referência: ‘duas linhas abaixo de onde estou’. Em macros que percorrem bases de tamanho variável, o Offset costuma deixar o código mais natural e flexível.
Conclusão – Offset no VBA
Nessa aula eu te mostrei uma propriedade bem interessante do VBA que é o Offset. Ela pode te ajudar em várias situações.
Principalmente quando você precisa pegar uma informação em uma coluna ao lado, o que é muito comum dentro do Excel na hora de retornar uma informação.
Então ao invés de simplesmente fazer uma nova busca ou ir até a linha onde está aquela informação, basta utilizar o Offset para mover o seu intervalo/seleção para a informação ao lado!
Esse tipo de propriedade é interessante, pois você tem mais de uma forma de fazer uma mesma coisa dentro do VBA, pode ser que com o Offset não funcione ou não fique viável o que você quer, então pode fazer de outra maneira.
Mas é importante que saiba mais de uma maneira de resolver um mesmo problema, pois isso vai te ajudar bastante!
Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA!
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!

