Como trabalhar com células e intervalos no VBA do Excel

Saber como referenciar, ler e escrever em células é a habilidade mais fundamental do VBA. Praticamente toda macro que você vai criar precisa acessar células para ler dados, escrever resultados ou aplicar formatação. Neste artigo iremos mostrar as principais formas de trabalhar com células e intervalos no VBA, com exemplos claros e prontos para usar.

As duas formas principais de referenciar células

No VBA, existem duas formas principais de referenciar uma célula ou intervalo:

Range

O Range permite referenciar células usando o endereço no formato do Excel, como “A1”, “B2:C10” ou “A:A”:

Range("A1").Value = "Olá"
Range("B2:D10").Interior.Color = RGB(255, 255, 0)

Cells

O Cells permite referenciar uma célula usando coordenadas numéricas de linha e coluna, o que é muito útil dentro de loops:

Cells(1, 1).Value = "Olá"  ' célula A1 (linha 1, coluna 1)
Cells(2, 3).Value = "Oi"   ' célula C2 (linha 2, coluna 3)

Lendo e escrevendo valores em células

Para ler o valor de uma célula, acesse a propriedade Value:

Dim valor As String
valor = Range("A1").Value
MsgBox "O valor de A1 é: " & valor

Para escrever um valor:

Range("A1").Value = "Excel"
Range("B1").Value = 1000
Range("C1").Value = Date  ' escreve a data atual

Trabalhando com intervalos

Você pode trabalhar com um intervalo inteiro de células de uma vez, o que é muito mais eficiente do que célula por célula:

' preenche todas as células do intervalo com o mesmo valor
Range("A1:A10").Value = 0

' limpa o conteúdo de um intervalo
Range("B1:D20").ClearContents

' copia um intervalo para outro local
Range("A1:A10").Copy Destination:=Range("C1")

Propriedades úteis de células

Além de Value, as células têm várias propriedades que você pode ler ou alterar:

' fórmula da célula
Range("A1").Formula = "=SOMA(B1:B10)"

' texto exibido (o valor formatado como aparece na tela)
Debug.Print Range("A1").Text

' endereço da célula
Debug.Print Range("A1").Address  ' retorna "$A$1"

' número da linha e coluna
Debug.Print Range("C5").Row     ' retorna 5
Debug.Print Range("C5").Column  ' retorna 3

Formatando células via VBA

' cor de fundo
Range("A1").Interior.Color = RGB(0, 112, 192)  ' azul

' cor do texto
Range("A1").Font.Color = RGB(255, 255, 255)    ' branco

' negrito
Range("A1").Font.Bold = True

' tamanho da fonte
Range("A1").Font.Size = 14

' bordas
Range("A1:D10").Borders.LineStyle = xlContinuous

Encontrando a última linha e coluna com dados

Uma das necessidades mais comuns no VBA é saber até onde vão os dados. Existem duas formas muito usadas para isso:

' encontrar a última linha com dados na coluna A
Dim ultimaLinha As Long
ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row

' encontrar a última coluna com dados na linha 1
Dim ultimaColuna As Long
ultimaColuna = Cells(1, Columns.Count).End(xlToLeft).Column

UsedRange: o intervalo com dados da planilha

A propriedade UsedRange retorna o intervalo que contém todos os dados usados na planilha:

Dim dados As Range
Set dados = ActiveSheet.UsedRange

MsgBox "A tabela tem " & dados.Rows.Count & " linhas e " & dados.Columns.Count & " colunas"

Offset: navegando a partir de uma célula

O Offset permite referenciar uma célula com base no deslocamento a partir de outra célula. Isso é muito útil dentro de loops:

' célula 1 linha abaixo e 2 colunas à direita de A1
Range("A1").Offset(1, 2).Value = "Deslocado"

CurrentRegion: selecionando a tabela ao redor da célula

O CurrentRegion retorna o intervalo contíguo ao redor de uma célula, ou seja, a tabela inteira sem células em branco ao redor:

Range("A1").CurrentRegion.Select

Isso é muito útil quando você não sabe o tamanho da tabela e quer selecionar ou processar todos os dados de uma vez.

Dica de desempenho: desativar o ScreenUpdating

Quando uma macro faz muitas operações em células, o Excel fica redesenhando a tela a cada mudança, o que deixa a macro lenta. Para acelerar muito a execução, desative a atualização da tela durante a execução:

Application.ScreenUpdating = False
' ... código da macro ...
Application.ScreenUpdating = True

Se você curtiu esse artigo onde mostramos como trabalhar com células e intervalos no VBA do Excel, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *