Objeto Range em Excel VBA
Antes de mais nada, aqui você vai encontrar um tutorial completo sobre Range no Excel VBA, vamos abordar tudo como criar um intervalo e utilizar esse objeto.
Nesse sentido, um intervalo (Range), pode ser uma célula, uma linha, uma coluna, ou um grupo de qualquer item.
Embora, o Objeto Range seja um dos mais utilizados no VBA em Excel, é importante que você conheça como fazer.
Logo depois, no decorrer desse artigo, você vai aprender através de dois exemplos como fazer referências a intervalos. Por último, vamos aprender a fazer referência a intervalos.
O Objeto Range em VBA: O que é?
O objeto range é uma propriedade do objeto Worksheet. Embora, isso signifique que ele precisa de uma planilha ativa. Ou de uma outra maneira, referenciar uma planilha.
Agora veja, dois exemplos que são a mesma coisa, caso a planilha Worksheets(1) esteja ativa:
- Range(“A1”)
- Worksheets(1).Range(“A1”)
Antes que, para encontrar uma Worksheet, é importante conhecer sua hierarquia.
Hierarquia dos objetos do Excel em VBA
Uma Hierarquia em VBA é composta pela seguinte ordem:
- Application -> Workbook -> Worksheet -> Range
Maneiras de Referir uma Range
Juntamente, após conhecer a Hierarquia de objetos, vamos demonstrar como uma Range(“A1”) que é o modelo mais comum de encontrar, pois vem junto com o Gravador de Macros.
No entanto, ela pode ser referenciada de outras maneiras, porém com o mesmo significado.
- Range (“A1”)
- [A1]
- Range(“A1”).Range(“B1”)
- Cells(1,1)
- Range(“A1”).Offset(4,3)
- Range(“IntervaloDefinido”) ‘Considerando que A1 foi renomeado por IntervaloDefinido
Sintaxe para Referenciar um Intervalo
No entanto, a propriedade Range é composta por duas sintaxes. Embora, ambas apresentam o mesmo resultado, é possível demonstrar de duas maneiras diferentes.
Suponhamos que precisamos referenciar um intervalo de “A1:C10”, nesse caso, temos uma seleção conforme abaixo.
Embora, para realizar tal seleção, seja necessário apenas selecionar o intervalo com o mouse, através do VBA existem duas maneiras de realizar a mesma seleção.
Intervalo Retangular Principal
- Range(“A1:C10”).Select
Intervalo Retangular Alternativo
- Range(“A1″,”C10”).Select
Com isso, embora sejam duas variações diferentes, ambas realizam a seleção do intervalo, demonstrado.
Intervalo de Range em VBA Nomeado
Por outro lado, podemos renomear uma seleção alternativa, e inserir um nome variável.
Por exemplo, selecionamos com o mouse o intervalo “A1:C10” e após isso, vamos definir um nome como IntervaloRange.
Após isso, podemos definir uma Range utilizando o nome definido para a seleção, como a seguir:
- Range(“IntervaloRange”).Select
Portanto, para realizar a seleção de Range, como podemos ver existem inúmeras oportunidades através do Excel VBA, depende de você escolher a melhor e que mais facilite o seu trabalho.
Referenciar Range em outra Planilha com VBA
Contudo, alternar entre planilhas pode deixar sua planilha um pouco lenta quando se utiliza o VBA.
No entanto, para evitar que isso ocorra, podemos utilizar a Range vinculada com uma Worksheets, para referenciar uma planilha que não esteja ativa, como por exemplo.
Referenciar na mesma Workbook
- Worksheets(“Planilha1”).Range(“A1”)
Em resumo, essa linha faz referência a Célula A1 da Planilha1, independente se você estiver com a Planilha2, 3 ativa.
Referenciar uma Workbook diferente
- Workbooks(“Plan_Studio_Excel.xlsm”).Worksheets(“Planilha1”).Range( “A1”)
Por outro lado, se estamos com mais de uma Workbook ativa, podemos alternar entre elas com o código acima, sem que sua planilha permaneça lenta.
Copiar e Colar com VBA
Uma das funções mais utilizadas no Excel VBA seria o Copiar e Colar, que se trata de copiar valores de um Intervalo X e colar no Intervalo Y.
Com uso do VBA, tornamos esse método bastante simplifcado.
Portanto, existem dois métodos de realizar a ação, primeiro vamos demonstrar a maneira comum, que pode ser evitada, e após isso a maneira ideal.
Exemplo 1:
Em resumo, vamos copiar os Dados de A1 e B1, e colar na Célula D5 e E5.
Range ("A1:B1").Select
Selection.Copy
Range ("D5").Select
ActiveSheet.Paste
Como resultado, teremos.
Por outro lado, podemos simplificar em apenas uma linha.
Exemplo 2:
Aqui se encontra a maneira ideal e mais simplificada para realizar o mesmo procedimento.
Range("D5:E5").Value = Range("A1:B1").Value
Com isso, vamos replicar a mesma atividade de antes, de uma maneira bem simplificada, sem provocar lentidão.
Apagar com VBA utilizando uma Range
Por fim, conheçam as duas maneiras de limpar as informações utilizando o VBA, com a seleção de uma Range.
Range("A1:B1").ClearContents
Por outro lado, podemos realizar a mesma seleção utilizando:
Range("A1").Value = ""
Portanto, chegamos ao fim de nosso passo a passo sobre Range no Excel em VBA. Utilizamos como referência para esse artigo o Livro: Excel 2016 VBA e Macros do Auto: Bill Jelen.