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 Offset parte 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") ou Cells(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.Print e rodar a macro com F5
  • 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 Offset ler 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 Offset recebe primeiro o número de linhas e depois o de colunas: Offset(1, 1) a partir de C3 leva a D4
  • Valores positivos no Offset deslocam 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") e Cells(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”.

Ícone VBAVBA Impressionador

Como automatizar praticamente qualquer tarefa repetitiva que você faça dentro do Excel. Aprenda a criar integrações do Excel com o PowerPoint, Word, Outlook e muito mais. Aprenda a criar automações para resolver tudo com apenas um clique em um botão. Tudo isso com uma única linguagem que junta todos esses programas.

Começar agoraSeta para a direita
Fundo VBATelas VBA

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:

Offset no VBA

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).

VBA Offset
VBA Offset

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:

Como usar Offset no VBA
Como usar Offset no VBA

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).

Offset no VBA

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!


Quer aprender mais sobre VBA com um minicurso básico gratuito?