Antes de iniciarmos a falar sobre Range, Cells e Offset vamos fazer uma revisão rápida das maneiras de utilizar células.

Podemos tanto utilizar o Range como o Cells, ou seja selecionar a célula “A2” pode ser:

Cells(1,2).select (linha 1 e coluna 2)
Ou
Range(“A2”).select

Você pode usar das duas formas para selecionar (.select) ou para pegar o valor da célula (.value), mas existe alguns detalhes que só é possível ora com a primeira forma ora com a segunda forma.

Exemplos:
É fácil selecionar um grupo de células com o range: Range(“A1:B2”).select
Com o cells podemos selecionar todas as células da planilha: Cells.Select
Ou apagar o conteúdo das células Cells.ClearContents

Entretanto algumas vezes nos deparamos com uma situação que nos exige copiar algum dado abaixo ou ao redor da célula selecionada!!!

Antes de prosseguirmos vamos colocar um exemplo para facilitar. Sempre que alguém clicar em uma célula, desejamos que o valor dessa célula seja copiado para célula à direita.

exemplo_uso_offset
Um caminho mais tortuoso é saber a coluna ativa e a linha ativa, e a partir disso (como sabemos a coluna) adicionar + 1 e colar o valor da célula atual

linha = activeCell.row

coluna = activeCell.column

Cells(linha, coluna + 1).Value = Cells(linha, coluna).Value

_________________________________________________________

Offset
Mas com o uso do offset esta tarefa é facilitada, pois essa propriedade nos permite movimentar ao redor da célula ativa ou de uma célula especifica.

Ou seja podemos utilizar como:
Movimentar a partir de célula especifica >> Range(“B2”).Offset(1,0).Select
Ou
Movimentar ao redor da célula ativa >> ActiveCell.Offset(1,0).Select

Modo de usar:
Na propriedade offset o primeiro número dentro dos parênteses representa as linhas que você irá movimentar. Número positivo significa quantas casas a para baixo, número negativo acima e o zero permanece no mesmo local

O segundo número dentro dos parênteses representa as colunas, positivo a direita, negativo à esquerda e o zero permanece na mesma coluna.

comoFuncionaOffset

Ou seja para movimentar o cursor uma célula para baixo:
ActiveCell .Offset(1,0).Select
Movimentar acima:
ActiveCell .Offset(-1,0).Select
Movimentar para direita:
ActiveCell.Offset(0,1).Select
Movimentar para esquerda:
ActiveCell.Offset(0,-1).Select

__________________________________________________________________________

Caso esteja iniciando com macros sugiro acessar os primeiros passos ->> clique aqui

Caso deseja ver mais utilidades com a propriedade offset – >> clique aqui

 

Segue Vídeo sobre Range, Cells e Offset

 

Para ajudar ainda mais, coloco abaixo a planilha Range, Cells e Offset gratuitamente.
Espero que lhe ajude!

download planilha excel vba