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

Hoje, eu escrevo sobre alguns métodos muito úteis disponíveis no objeto Range do Microsoft Excel. Você conhece o objeto Range? Bem, é aquele objeto que deixa você mexer com as células de uma planilha.

Vamos a alguns exemplos:

Sub Macro1()
    'Seleciona as regi㯠de c鬵las B3:E8
    Range("B3:E8").Select
   
    'Copia e cola valores
    Range("B3:E8").Copy
    Range("B8").PasteSpecial xlPasteValues
   
    'Limpa tudo (valores, formata絥s ...)
    Range("B3:E8").Clear
   
    'Limpa valores
    Range("B3:E8").ClearContents
   
    'Limpar formata絥s
    Range("B3:E8").ClearFormats
   
    'Altera a cor da fonte
    Range("C11:G20").Font.Color = -16776961
   
End Sub

Propriedade CurrentRegion

O que essa propriedade faz? Veja a situação da imagem abaixo:

Base de dados simples

Suponha que eu precise sempre selecionar a região de células onde existam dados e que essa minha base de dados sempre cresça. Hoje, a última linha da base é a linha 27, mas amanhã talvez chegue até a linha 40. Um código não otimizado seria o seguinte:

Sub Macro2()
    Range("B2:G27").Select
    Selection.Copy
End Sub

Este código está copiando a região de células da minha base de dados, mas e se amanhã essa base de dados crescer? Toda vez você terá de atualizar o código.

Como resolver ? Utilize a propriedade CurrentRegion. A propriedade CurrentRegion retorna a região atual, que é um intervalo delimitado por qualquer combinação de linha e colunas em branco. Essa propriedade é útil para o trabalho com intervalos que mudam com frequência.

Sub Macro3()
    Range("B2").CurrentRegion.Select
    Selection.Copy
End Sub

Basta você definir uma célula qualquer que esteja dentro da região de dados (no exemplo, utilizei a célula B2) e usar a propriedade CurrentRegion.

O que acontece se você definir no código uma célula que não esteja na região de dados, como a célula AA2, por exemplo?A propriedade CurrentRegion vai retornar apenas a célula que você definiu, ou seja, a célula AA2.

Sub Macro4()
    Range("AA2").CurrentRegion.Select
    Selection.Copy   
End Sub

Outro exemplo:

Sub Macro5()
    Range("B2").CurrentRegion.Copy Range("AA2")
End Sub

Créditos

Photo by ThisIsEngineering from Pexels