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?
- Como usar o Offset no VBA?
- Sintaxe da Propriedade OFFSET no VBA
- Usando Offset com o Objeto Range
- Deslocar para a esquerda e acima
- Selecionando um intervalo de células
- Usando OFFSET com ActiveCell
- Usando OFFSET com ActiveCell para selecionar um intervalo
- Copiar um intervalo usando OFFSET
- Usando Offset com o Objeto Cells
- Detalhes para se lembrar
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:
- Especifique o intervalo (Range) de onde você deseja iniciar.
- Insira um ponto (.) para obter uma lista de propriedades e métodos.
- Selecione a propriedade Offset e especifique os argumentos (linha e coluna).
- 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
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
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á:
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”.
- Conheça os principais comandos de VBA no Excel
- Como Gravar Macros no Excel – Um Guia Passo a Passo
- Como manipular planilhas do Excel com o VBA (com exemplos)
- Como Usar If Then Else no VBA – Passo a Passo
- Variáveis no VBA Excel – Guia Completo