Este post foi originalmente publicado em https://officevbavsto.blogspot.com/2011/09/o-retorno-de-jedi-e-um-pouco-do-objeto_10.html.

Continuando o artigo sobre o objeto Range, hoje, eu escrevo sobre a propriedade Offset.

Propriedade Offset

Pense na seguinte situação: você precisa copiar uma base de dados numa planilha do Excel que sempre crescerá, mas você gostaria de não copiar o cabeçalho desta base de dados. Talvez este cabeçalho tenho 1 linha, ou até mais linhas. Como fazer isso?

Vamos a um exemplo prático.

Ainda usando a planilha de exemplo do artigo anterior digite o seguinte código:

Sub Macro1()

    Range("B2").CurrentRegion.Select

    Selection.Offset(1, 0).Select

    Selection.Copy

End Sub

Observe que a primeira linha não foi selecionada, pois a seleção foi deslocada (Offset).

A propriedade Offset, possui dois parâmetros: RowOffset e ColumnOffset.

  • Em RowOffset você especifica quantas linhas devem ser deslocadas, este argumento pode receber números positivos, negativos e zero. Se negativo, a seleção será deslocada para trás e se positivo será deslocada adiante.
  • Em ColumnOffset você especifica quantas colunas devem ser deslocadas, e recebe os parâmetros da mesma maneira que RowOffset.

Sintaxe: expressão.Offset(RowOffset, ColumnOffset).

Vamos a mais alguns exemploes:

Sub Macro2()

    Range("B2").CurrentRegion.Select

    Selection.Offset(0, 1).Select

    Selection.Copy

End Sub

No exemplo acima eu desloquei uma coluna a direita.

Sub Macro3()

    Range("B2").CurrentRegion.Select

    Selection.Offset(-1, 0).Select

    Selection.Copy

End Sub

No exemplo acima eu desloquei uma linha acima.

E, por fim, um exemplo de um código otimizado:

Sub Macro4()

    Range("B2").CurrentRegion.Offset(4, 0).Copy Range("AA2")

End Sub

Créditos

Photo by Anna Shvets from Pexels