Offset no VBA: Como Utilizar Essa Propriedade?

Quer aprender a usar a propriedade Offset no VBA? Então você está no lugar certo!

A propriedade OFFSET tem como objetivo retornar uma referência a um intervalo que é um número específico de linhas e colunas a partir de outro intervalo ou célula.

Quando se trata de VBA, pode-se dizer que essa propriedade é uma das mais importantes, pois permite o deslocamento, seja horizontal ou vertical, de um intervalo de células, podendo ser utilizada por um infinidade de macros.

Confira os detalhes a seguir para saber mais sobre este assunto e veja como utilizar essa propriedade no VBA através de exemplos práticos!

Navegue pelo tópico de seu interesse:


O que significa Offset VBA?

Offset é um comando usado para o deslocamento, seja horizontal ou vertical, de um intervalo de células.

Para melhor compreensão, suponha que você tenha uma planilha e da célula A1, você deseja mover 5 células para baixo e selecionar a 6ª célula ou seja, a célula A6.

Da mesma forma, se você deseja mover para baixo da célula A1 2 linhas e ir 2 colunas para a direita e selecionar essa célula, ou seja, a célula C2. Nestes casos, a propriedade OFFSET do VBA poderá lhe atender.

Como usar o Offset no VBA?

No VBA, não podemos inserir diretamente a palavra OFFSET. Ou seja, primeiro precisamos usar o objeto Range ou o objeto Cells e, a partir de um desses dois podemos usar a propriedade OFFSET.

Sintaxe da Propriedade OFFSET no VBA

Para saber como usar a propriedade Offset no VBA, primeiro é necessário conhecer a sua sintaxe que neste caso é:

expression.Offset (RowOffset, ColumnOffset)

Onde:

  • RowOffset: quantas linhas você deseja deslocar a partir da célula selecionada. Se o valor for positivo então são deslocadas para baixo e se os valores forem negativos são deslocadas para cima. O valor padrão é 0.
  • ColumnOffset: quantas colunas você deseja deslocar a partir célula selecionada. Se o valor for positivo então são deslocadas para a direita, e se o valor for negativo será feito o deslocamento para a esquerda. O valor padrão é 0.

Usando Offset com o Objeto Range

Para usar a propriedade Offset com o objeto Range no VBA, siga as etapas:

  1. Especifique o intervalo (Range) de onde você deseja iniciar.
  2. Insira um ponto (.) para obter uma lista de propriedades e métodos.
  3. Selecione a propriedade Offset e especifique os argumentos (linha e coluna).
  4. No final, selecione a propriedade a ser usada com o deslocamento. Exemplo: Select, Copy, etc.

O código abaixo faz o deslocamento de 3 linhas para baixo e 3 colunas para a direita a partir da célula A1, ou seja, como resultado teremos a célula D4 selecionada.

Range("A1").Offset(3, 3).Select

Offset com o Objeto Range

Deslocar para a esquerda e acima

No exemplo acima, vimos como deslocar células abaixo e a direita. No entanto, também podemos selecionar as células acima das células especificadas. Por exemplo, se você estiver na célula A10 e quiser selecionar a célula A1.


No caso de deslocar células para baixo, podemos inserir um número positivo, então aqui, no caso de subir, precisamos inserir números negativos.

Da célula A10, precisamos subir 9 linhas, ou seja, -9. Portanto, o código ficará da seguinte maneira:

Range("A10").Offset(-9).Select

Por outro lado, suponha que você esteja na célula C8. A partir desta célula, você deseja selecionar a célula A10.

Da célula ativa, l, ou seja, célula C8, precisamos primeiro mover 2 linhas para baixo e precisamos mover para a esquerda 2 colunas para selecionar a célula A10.

No caso de mover para a esquerda para selecionar a coluna, precisamos especificar que o número é negativo. Então aqui precisamos voltar por -2 colunas.

Range("C8").Offset(2, -2).Select

Selecionando um intervalo de células

Você também pode selecionar um grupo de células usando a propriedade Offset. O código a seguir selecionará o intervalo que está 7 linhas abaixo e 3 colunas à direita do intervalo de entrada (“A1:A5”):


Range("A1:A5").Offset(7,3).Select

Selecionando um intervalo de células

Além disso, você também pode criar um código para selecionar o intervalo usando um tamanho personalizado. Veja o exemplo abaixo:

Range(Range("A1").Offset(1, 1), Range("A1").Offset(5, 2)).Select

Para entender esse código, você precisa dividi-lo em três partes:

  • Range(“A1”).Offset(1, 1): Nesta primeira parte, estamos usando o objeto Range para se referir à célula que está uma linha abaixo e uma coluna à direita da célula A1.
  • Range(“A1”).Offset(5, 2): Nesta segunda parte, estamos usando o objeto range para se referir à célula que está cinco linhas abaixo e duas colunas à direita da célula A1.
  • Range(Range(“A1”).Offset(1, 1), Range(“A1”).Offset(5, 2)).Select: Nesta terceira parte, estamos usando as células da primeira e segunda parte para se referir a um intervalo e selecioná-lo.

Usando OFFSET com ActiveCell

Você também pode usar a célula ativa em vez de usar um intervalo predefinido. Isso significa que você obterá um deslocamento dinâmico para selecionar uma célula navegando a partir da célula ativa. Veja o exemplo abaixo:

ActiveCell.Offset(4, 3).Select

O exemplo acima selecionará a célula que está quatro linhas abaixo e três colunas à direita da célula ativa.

Usando Offset com ActiveCell para selecionar um intervalo

Use o código a seguir para selecionar um intervalo da célula ativa.

Range(ActiveCell.Offset(1, 1), ActiveCell.Offset(4, 3)).Select

Copiar um intervalo usando Offset no VBA

Você também pode utilizar a propriedade Offset para copiar um intervalo de células. Para isto, considere o exemplo abaixo:

Range(Range("A1").Offset(1, 1), Range("A1").Offset(2, 2)).Copy

Outra opção de código é:

Range(ActiveCell.Offset(1, 1), ActiveCell.Offset(2, 2)).Copy





Usando Offset com o Objeto Cells

Você pode usar o seguinte código com o objeto Cells e a propriedade Offset para selecionar a célula C3 a partir da célula D4.

Cells(1, 3).Offset(3, 2).Select

O resultado será:

Offset com o Objeto Cells

O código acima primeiro se refere à célula A1 com a linha um e a coluna um usando a propriedade Cells e, em seguida, usa a propriedade Offset para selecionar a célula que está três linhas abaixo e duas colunas a direita.

Detalhes para se lembrar

  • Inteiros positivos informam a Offset para mover para baixo e para a direita. Os inteiros negativos movem-se para cima e para a esquerda.
  • Se RowOffset ou ColumnOffset são 0 (zero), eles podem ser omitidos.
    • Exemplo 1 – Selecionar célula D1: Range(“A1”).Offset(, 3).Select
    • Exemplo 2 – Selecionar célula D1: Range(“A1”).Offset(4).Select
  • A célula A1 é a primeira linha e a primeira coluna.
  • ActiveCell significa células atualmente selecionadas.
  • Se você deseja selecionar a célula usando OFFSET, você precisa mencionar “.Select”.
  • Se você quiser copiar a célula usando OFFSET, você precisa mencionar “.Copy”.
Confira também as seguintes dicas de Excel e VBA:
E então, o que achou das dicas de uso da propriedade Offset no VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo.