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