VBA – Offset da ActiveCell
In this Article
Este tutorial demonstrará como usar o Activecell Offset no VBA.
A ActiveCell é uma propriedade do VBA que representa o endereço da célula ativa em sua planilha. Se o cursor estiver posicionado na célula A1, a propriedade ActiveCell do VBA retornará o endereço de célula “A1”. Há várias propriedades e métodos conectados à ActiveCell. Neste artigo, vamos nos concentrar no método ActiveCell.Offset.
Propriedades e Métodos de ActiveCell.Offset
O ActiveCell.Offset tem várias propriedades e métodos disponíveis para serem programados com o VBA. Para visualizar as propriedades e os métodos disponíveis, digite a seguinte instrução em um procedimento, conforme mostrado abaixo, e pressione a tecla de ponto final no teclado para ver uma lista suspensa.
Os métodos são representados pelo ícone de método verde e as propriedades pelo ícone de mão pequena. As propriedades e os métodos do método ActiveCell.Offset são os mesmos do método ActiveCell.
Sintaxe do ActiveCell.Offset
A sintaxe do ActiveCell.Offset é a seguinte
em que RowOffset e ColumnOffset são o número de linhas a serem deslocadas (números positivos para baixo, números negativos para cima) ou o número de colunas que você deseja deslocar (números positivos deslocam para a direita, números negativos para a esquerda).
ActiveCell.Offset..Select
O método Activecell.Offset..Select é o método mais comumente usado para o método Activecell.Offset. Ele permite que você se desloque para outra célula da planilha. Você pode usar esse método para se deslocar entre colunas ou para cima ou para baixo nas linhas da planilha.
Para mover-se para baixo em uma linha, mas permanecer na mesma coluna:
Activecell.Offset(1,0).Select
Para mover-se em uma coluna, mas permanecer na mesma linha:
Activecell.Offset (0,1).Select
Para descer em uma linha e atravessar uma coluna:
Activecell.Offset (1,1).Select
Para subir em uma linha:
Activecell.Offset(-1,0).Select
Para mover uma coluna para a esquerda:
Activecell.Offset(0,-1).Select
No procedimento abaixo, estamos fazendo um loop em um intervalo de células e movendo uma linha para baixo e uma coluna para o outro lado à medida que fazemos o loop:
Sub TesteActiveCell()
Dim x As Integer
Range("A1").Select
For x = 1 To 10
ActiveCell = x
ActiveCell.Offset(1, 1).Select
Next x
End Sub
O resultado disso é mostrado no gráfico abaixo:
O loop coloca o valor de i (1-10) na Activecell e, em seguida, usa a propriedade Activecell.Offset para descer uma linha e atravessar uma coluna para a direita, repetindo esse loop 10 vezes.
Uso do Objeto Range com Activecell.Offset Select
O uso do Objeto Range com a célula ativa às vezes pode confundir algumas pessoas.
Considere o seguinte procedimento:
Sub TesteActiveCellOffsetComRange()
Range("B1: B10").Select
ActiveCell.Offset(1, 1).Range("A1").Select
End Sub
Com ActiveCell.Offset(1,1.Range(“A1”), o Range(“A1”) foi especificado. Entretanto, isso não significa que a célula A1 da planilha será selecionada. Como especificamos o Range(“B1:B10”), a célula A1 nesse intervalo é, na verdade, a célula B1 na pasta de trabalho. Portanto, a célula será deslocada em 1 linha e 1 coluna da célula B1 e NÃO da célula A1.
Portanto, o Range(“A1”) nesse caso não é necessário, pois a macro funcionará da mesma forma com ou sem ele.
Alternativas ao ActiveCell
Em vez de usar Activecell com o método Offset, também podemos usar o objeto Range com o método Offset.
Sub TesteRangeOffset()
Range("B1").Offset(0, 1).Select
End Sub
O procedimento acima selecionaria a célula C1 na planilha.