Este tutorial demonstrará como usar o Activecell Offset no VBA.
O ActiveCell é uma propriedade do VBA que representa o endereço da célula ativa em sua planilha. Se o ponteiro do mouse estiver posicionado na célula A1, a propriedade ActiveCell no VBA retornará o endereço da célula “A1”. Existem várias propriedades e métodos que estão conectados ao ActiveCell. Neste artigo, estamos nos concentrando no método ActiveCell.Offset.
Propriedades e métodos ActiveCell.Offset
Activecell.Offset tem várias propriedades e métodos disponíveis para serem programados com o VBA. Para visualizar as propriedades e métodos disponíveis, digite a seguinte instrução em um procedimento conforme mostrado abaixo e pressione a tecla ponto 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 métodos do método Activecell.Offset são iguais aos do método Activecell.
ActiveCell.Offset Syntax
A sintaxe de Activecell.Offset é a seguinte
onde RowOffset e ColumnOffset são o número de linhas a serem compensadas (números positivos para baixo, número negativo para cima) ou o número de colunas que você deseja compensar (números positivos deslocam-se para a direita, número negativo para a esquerda).
ActiveCell.Offset… Selecione
o Activecell.Offset… Selecione método é o método mais comumente usado com o método Activecell.Offset. Ele permite que você vá para outra célula em sua planilha. Você pode usar esse método para mover-se pelas colunas ou para cima ou para baixo nas linhas da planilha.
Para descer uma linha, mas permanecer na mesma coluna:
1 | Activecell.Offset (1,0) .Selecionar |
Para mover em uma coluna, mas permanecer na mesma linha:
1 | Activecell.Offset (0,1) .Selecionar |
Para descer uma linha e atravessar uma coluna:
1 | Activecell.Offset (1,1) .Selecionar |
Para subir uma linha:
1 | Activecell.Offset (-1,0) .Selecionar |
Para mover uma coluna para a esquerda:
1 | Activecell.Offset (0, -1) .Selecionar |
No procedimento abaixo, estamos percorrendo um intervalo de células e descendo uma linha e uma coluna à medida que fazemos o loop:
12345678 | Sub ActiveCellTest ()Dim x As IntegerIntervalo ("A1"). SelecionePara x = 1 a 10ActiveCell = xActiveCell.Offset (1, 1) .SelecionarPróximo xEnd Sub |
O resultado disso é mostrado no gráfico abaixo:
O Loop coloca o valor de i (1-10) no Célula ativa, e então usa o Activecell.Offset para mover para baixo uma linha, e através de uma coluna para a direita - repetindo este loop 10 vezes.
Programação VBA | O Code Generator funciona para você!
Usando Range Object com Activecell.Offset Select
Usar o objeto Range com a célula ativa às vezes pode confundir algumas pessoas.
Considere o seguinte procedimento:
1234 | Sub ActiveCellOffsetRange ()Intervalo ("B1: B10"). SelecioneActiveCell.Offset (1, 1) .Range ("A1"). SelecioneEnd Sub |
Com o ActiveCell.Offset (1,1.Range (“A1”), o intervalo (“A1”) foi especificado. No entanto, isso não significa que a célula A1 na planilha será selecionada. Como especificamos o intervalo ("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 de célula B1 NÃO da célula A1.
Portanto, o intervalo (“A1 ′) neste caso não é necessário, pois a macro funcionará da mesma maneira com ele ou sem ele.
Alternativas para ActiveCell
Em vez de usar o Activecell com o método Offset, também podemos usar o objeto Range com o método Offset.
123 | Sub RangeOffset ()Intervalo ("B1"). Offset (0, 1) .SelecioneEnd Sub |
O procedimento acima selecionaria a célula C1 na planilha.