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?

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:

O que é cells no VBA?

  • 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.

Inserir dados em uma célula com o VBA

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.

Como usar a propriedade Cells VBA

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:

 Cells VBA com o objeto Range

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

como usar cells e range

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

Usando a propriedade Cells VBA com Loop

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:

Como utilizar o objeto Range VBA

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

Selecionar uma única célula

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:

Selecionar linha

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:

Selecionar coluna

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.

Selecionar células adjacentes

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.

Selecionar células não adjacentes

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.
Confira também as seguintes dicas:
E então, o que achou das dicas sobre Range e Cells VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo!