Range e Cells VBA: Como usar Intervalos no VBA?
Neste post, você vai encontrar as principais informações sobre Range e Cells VBA.
Se você é iniciante no VBA, então é provável que já tenha se perguntado qual é a diferença entre Range e Cells VBA e como utilizar cada um destes elementos.
Neste post, separamos as principais informações sobre este assunto para que você possa aprender a usar Range e Cells no VBA. Você pode lê-lo do início ao fim, ou se preferir, você pode usar o índice abaixo para ir para uma seção de sua escolha.
- Range e Cells VBA: Qual a diferença?
- Como utilizar a propriedade Cells VBA?
- Como utilizar o objeto Range VBA?
- Detalhes importantes sobre Range e Cells VBA
Range e Cells VBA: Qual a diferença?
No VBA, uma Range é um objeto e uma Cells é uma propriedade em uma planilha Excel. No VBA, temos duas maneiras de referenciar um objeto de célula, uma por meio de Range e outra por meio de Cells.
Por exemplo, se quiser fazer referência à célula D5, você pode usar dois métodos:
Usando o método Range:
Range("D5")
Usando o Método de Cells:
Cells(4,5)
Da mesma forma, se você deseja inserir a palavra “Olá” na célula D5, você pode usar o código abaixo.
Usando o método Range:
Range("D5").Value = "Olá"
Usando o Método de Células:
Cells(4, 5).Value = "Olá"
Por outro lado, se quisermos selecionar múltiplas células, só podemos selecionar através do objeto Range. Por exemplo, se quisermos selecionar células de A1 a A10 podemos usar o código abaixo:
Range("A1:A10").Select
No entanto, infelizmente, só podemos referenciar uma célula por vez usando a propriedade CELLS. Porém, podemos usar a propriedade Cells com um objeto Range como o mostrado abaixo.
Range("A1:D10").Cells(5, 4).Select
O código acima significa que no intervalo A1:D10 estamos selecionando a quinta linha e a quarta coluna, ou seja, a célula D5.
Como utilizar a propriedade Cells VBA?
Antes de aprender a utilizar a propriedade Cells no VBA, é importante compreender os elementos que compõem essa propriedade. Para isto, observe a imagem abaixo:
- RowIndex: representa a linha que estamos referenciando.
- ColumnIndex: representa a coluna que estamos referenciando.
Exemplos:
- Cells(1, 1) significa célula A1.
- Cells(2, 1) significa célula A2.
- Cells(1, 2) significa célula B1.
Cells(2, 2) significa célula B2. - Cells(10, 3) significa célula C10.
- Cells(15, 5) significa célula E15.
Exemplo 1: Inserindo dados em uma célula
Neste primeiro exemplo, suponha que você esteja trabalhando em uma planilha chamada Vendas e queira inserir a palavra Vendedor na célula A1.
Neste caso, você poderá utilizar o código abaixo:
Sub Exemplo()
Cells(1,1).Value = "Vendedor"
End Sub
Como resultado, temos a palavra Vendedor inserida na célula A1.
Caso tenha várias planilhas na sua pasta de trabalho e queira inserir um dado em uma célula de uma planilha específica, então será necessário combinar a propriedade CELLS com um nome de planilha desejada. Para consultar uma planilha específica, use o Objeto Worksheet conforme o exemplo abaixo:
Sub Exemplo()
Worksheets("Vendas").Cells(1,1).Value = "Vendedor"
End Sub
Isso irá inserir a palavra Vendedor na planilha Vendas, independentemente de qual planilha você esteja ou de quantas planilhas existem na sua pasta de trabalho.
Exemplo 2: Usando a propriedade Cells VBA com o objeto Range
Conforme mencionado anteriormente, o VBA permite o uso da propriedade CELLS com um objeto RANGE. Para melhor compreensão, observe o exemplo abaixo:
Range("C3:E9").Cells(1,1).Select
O código acima diz que no intervalo C3 a E9 deve ser selecionada a primeira célula.
Se inserimos alguns dados na planilha e executarmos o código, veja o que acontece:
Observe que o Excel selecionou a célula C3. Mas Cells(1, 1) significa célula A1, não é mesmo?
A razão pela qual o Excel selecionou a célula C3 é porque, usando o objeto range, especificamos o intervalo de C3 a E9, então a propriedade Cells trata o intervalo de C3 a E9, não da célula A1 normal. Neste exemplo, C3 é a primeira linha e a primeira coluna, então Cells(1, 1).select significa célula C3.
Por outro lado, veja o que acontece se alterarmos o código para:
Range("C3:E9").Cells(3, 2).Select
Observe que o Excel selecionou a célula D5, ou seja, nº 26. Em outras palavras, Cells(3,2) significa começar na célula C3 movida para baixo em 3 linhas e mover 2 colunas para a direita, ou seja, célula D5.
Exemplo 3: Usando a propriedade Cells VBA com Loop
Uma das aplicações mais práticas da propriedade Cells VBA é seu uso em loops. Para melhor compreensão, observe o exemplo abaixo onde estamos e listando números de série de 1 a 10 usando um loop For Next.
Sub Exemplo()
Dim num As Integer
For num = 1 To 10
Cells(num, 1).Value = num
Next num
End Sub
Observe que declaramos a variável chamada num como um número inteiro.
Em seguida, aplicamos o loop For Next com num = 1 a 10, ou seja, o loop precisará ser executado 10 vezes.
Cells(num,1).value = num
Significa que, quando o loop for executado pela primeira vez, o valor de “num” será 1, portanto, sempre que o valor de “num” for 1, ou seja:
Cell(1,1).value = 1
Quando o loop retorna o valor de “num” pela segunda vez, ele será 2, então onde quer que esteja o valor de “num”, será 2, ou seja:
Cell(2,1).value = 2
Este loop será executado 10 vezes e inserirá o valor num de A1 a A10.
Como utilizar o objeto Range VBA?
No contexto de planilha do Excel, o objeto Range VBA inclui uma única célula ou várias células espalhadas por várias linhas e colunas. Ele ajuda a especificar uma célula, um intervalo de células, uma linha, uma coluna ou um intervalo tridimensional.
Por exemplo, o objeto Range pode ser usado para se referir a linhas ou colunas específicas ao escrever um código. O código abaixo retorna o número 3 no intervalo A1:A10.
Range("A1:A10").Value = 3
Quando se trabalha com objeto Range no VBA, é preciso compreender que existe um padrão de hierarquia. Esta hierarquia de objetos de três níveis consiste nos seguintes elementos:
- Qualificador de objeto (Object Qualifier): refere-se à localização do objeto. É a pasta de trabalho ou planilha onde o objeto é colocado.
- Propriedade (Property): armazena as informações relacionadas ao objeto.
- Método (Method): refere-se à ação que o objeto irá realizar. Por exemplo, para um determinado intervalo, os métodos são ações como classificar, formatar, selecionar, limpar, etc.
A estrutura hierárquica fornecida deve ser seguida sempre que um Objeto VBA é referido. Esses três elementos são separados pelo operador ponto (.) da seguinte maneira:
Application.Workbooks.Worksheets.Range
Outro ponto a ser considerado é a sintaxe da propriedade Range VBA conforme mostrado na imagem abaixo:
Por exemplo, para se referir à célula A1 (intervalo) na “planilha2” (planilha) de “Vendas” (pasta de trabalho), é utilizada a seguinte referência:
Application.Workbooks("Vendas.xlsm").Worksheets("planilha2").Range("A1")
Para melhor compreensão de uso do objeto Range, confira alguns exemplos a seguir:
Exemplo 1: Selecionar uma única célula
Neste primeiro exemplo, queremos selecionar a célula A1 na “planilha2” da pasta de trabalho. Para isto, precisamos abrir pasta de trabalho salva com no formato xlsm (pasta de trabalho habilitada para macros). O formato .xlsx não permite salvar as macros que estão sendo escritas no momento.
Com a planilha aberta, insira o seguinte código no VBA:
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("A1").Select End Sub
Através do código acima, estamos instruindo o VBA a ir para a célula especificada (A1) de uma planilha e pasta de trabalho específica. A ação a ser executada é selecionar a célula fornecida.
Exemplo 2: Selecionar linhas e colunas inteiras
Se quisermos selecionar uma linha inteira, podemos utilizar um código conforme exemplo abaixo:
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("3:3").Select End Sub
O intervalo (“3:3”) no código representa a terceira linha. Veja o resultado abaixo:
Do mesmo modo, podemos selecionar uma coluna inteira de uma planilha específica. Neste caso, podemos utilizar o código abaixo:
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("B:B").Select End Sub
O intervalo (“B:B”) no código representa a coluna B. Veja o resultado abaixo:
Exemplo 3: Selecionar células adjacentes e não adjacentes
Se você deseja selecionar um intervalo de células, então basta utilizar o código conforme mostrado abaixo.:
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("A2:C5").Select End Sub
Neste exemplo, estamos selecionando o intervalo A2:C5.
Por outro lado, se você precisa selecionar células não adjacentes, então basta utilizar o código conforme exemplo abaixo:
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("A2:C5, F2:F5").Select End Sub
O intervalo (“A2:C5, F2:F5”) mencionado no código representa os dois intervalos não adjacentes A2:C5 e F2:F5.
Exemplo 4: Selecionar e formatar células
Os exemplos anteriores mostram apenas a seleção de uma célula ou intervalo de células. No entanto, através da seleção das células é possível realizar alguma ação nas células selecionadas.
Por exemplo, se quisermos selecionar o intervalo de A2:A10 e mesclar as células selecionadas, então basta utilizar o código abaixo:
Sub Exemplo()
ThisWorkbook.Worksheets("planilha2").Range("A2:A10").Merge
End Sub
Confira abaixo alguns outros exemplos:
Alinhar texto de células selecionadas para a direita
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("A2:A10").HorizontalAlignment = xlRight End Sub
Limpar formatação em células selecionadas
Sub Exemplo() ThisWorkbook.Worksheets("planilha2").Range("A2:A10").ClearFormats End Sub
Dica de leitura: Para mais informações sobre formatação de células no VBA, recomendamos a leitura do post VBA Format Cells do site Automate Excel.
Detalhes importantes sobre Range e Cells VBA
- CELLS é uma propriedade e RANGE é um objeto. Podemos usar propriedade com objetos, mas não podemos utilizar o inverso.
- Quando um intervalo é fornecido, a propriedade Cells irá considerar apenas esse intervalo, e não o intervalo normal.
- Cells(1, 2) representa a célula B1, da mesma forma, Cells(1, “B”) também representa a célula B1.
- Ao utilizar Range no VBA, deve ser especificado no seguinte padrão hierárquico: Application.Workbooks.Worksheets.Range.
- Como Copiar e Colar no VBA – Passo a Passo
- Como manipular planilhas do Excel com o VBA (com exemplos)
- Erro em Tempo de Execução 1004 | Como Solucionar?
- Como Usar If Then Else no VBA – Passo a Passo
- Offset no VBA: Como Utilizar Essa Propriedade?