Formatação com VBA
Deslize para mostrar o menu
Tudo o que pode ser formatado manualmente no Excel, também pode ser formatado por código.
Fontes
With é uma forma abreviada de se referir ao mesmo objeto várias vezes seguidas sem precisar digitar seu nome completo em cada linha. With obj ... End With significa simplesmente que toda linha dentro desse bloco que começa com um ponto (como .Property = X) é uma abreviação para obj.Property = X — o VBA preenche automaticamente obj para cada uma. É apenas uma conveniência para facilitar a leitura; não altera o funcionamento do código.
' Without With — obj repeated on every line
ws.Range("A1:I1").Font.Bold = True
ws.Range("A1:I1").Font.Size = 11
ws.Range("A1:I1").Font.Color = RGB(255, 255, 255)
' With With — the object is stated once, everything else is shorthand
With ws.Range("A1:I1").Font
.Bold = True
.Size = 11
.Color = RGB(255, 255, 255)
.Name = "Calibri"
End With
Ambas as versões fazem exatamente a mesma coisa — With apenas evita repetir ws.Range("A1:I1").Font três vezes.
Cores
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Bordas
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Alinhamento
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Noções básicas de formatação condicional
O VBA pode aplicar as mesmas regras que você criaria pela faixa de opções:
Dim rng As Range
Set rng = ws.Range("I2:I6") ' Status column
rng.FormatConditions.Delete ' clear any existing rules first
rng.FormatConditions.Add Type:=xlTextString, String:="Cancelled", _
TextOperator:=xlContains
rng.FormatConditions(1).Interior.Color = RGB(255, 199, 206)
rng.FormatConditions(1).Font.Color = RGB(156, 0, 6)
Execute este código e todo pedido com status "Cancelled" recebe automaticamente um destaque em tom avermelhado — e, diferente da formatação manual, a regra permanece ativa caso o valor de Status seja alterado posteriormente.
Tarefa
- Negrito na linha de cabeçalho (
A1:I1), preenchimento verde escuro (RGB(24, 106, 60)) e fonte branca (RGB(255, 255, 255)) — tudo via código, não manualmente. - Adicionar bordas finas cinza (
RGB(200, 200, 200)) ao redor de toda a tabela usandoCurrentRegion. - Adicionar uma formatação condicional que destaque qualquer pedido com
Discount % >= 10em amarelo (RGB(255, 235, 156)).
1. Formatação da linha de cabeçalho
Font.Bold,Interior.ColoreFont.Colorpodem ser definidos no mesmo intervalo.- O preenchimento verde escuro exige um triplo RGB; fonte branca é o valor RGB mais simples possível.
- Um bloco
With...End Withevita repetirws.Range("A1:I1")três vezes.
2. Adicionando bordas com CurrentRegion
CurrentRegionem A1 seleciona toda a tabela sem precisar saber ou fixar quantas linhas existem.- Bordas possuem três propriedades a serem definidas juntas:
LineStyle,WeighteColor— cinza fino significaxlThine um valor RGB cinza claro.
3. Formatação condicional para Discount % >= 10
- Trata-se de uma comparação numérica, não textual, então o tipo de condição é xlCellValue com xlGreaterEqual — diferente do exemplo de texto “Cancelled” mostrado anteriormente no capítulo.
- O detalhe importante: Discount % é armazenado como decimal (10% = 0,1), então o valor de comparação em Formula1 deve ser "0.1", não "10".
- Sempre limpe as formatações condicionais existentes nesse intervalo antes, ou execuções repetidas da macro acumularão regras duplicadas.
Sub FormatOrdersTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
' --- 1. Header row formatting ---
With ws.Range("A1:I1")
.Font.Bold = True
.Interior.Color = RGB(24, 106, 60)
.Font.Color = RGB(255, 255, 255)
End With
' --- 2. Borders around the full table ---
With ws.Range("A1").CurrentRegion.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
' --- 3. Conditional format for Discount % >= 10 ---
Dim discountRange As Range
Set discountRange = ws.Range("G2:G6")
discountRange.FormatConditions.Delete
discountRange.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreaterEqual, Formula1:="0.1"
discountRange.FormatConditions(1).Interior.Color = RGB(255, 235, 156)
End Sub
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Formatação com VBA
Tudo o que pode ser formatado manualmente no Excel, também pode ser formatado por código.
Fontes
With é uma forma abreviada de se referir ao mesmo objeto várias vezes seguidas sem precisar digitar seu nome completo em cada linha. With obj ... End With significa simplesmente que toda linha dentro desse bloco que começa com um ponto (como .Property = X) é uma abreviação para obj.Property = X — o VBA preenche automaticamente obj para cada uma. É apenas uma conveniência para facilitar a leitura; não altera o funcionamento do código.
' Without With — obj repeated on every line
ws.Range("A1:I1").Font.Bold = True
ws.Range("A1:I1").Font.Size = 11
ws.Range("A1:I1").Font.Color = RGB(255, 255, 255)
' With With — the object is stated once, everything else is shorthand
With ws.Range("A1:I1").Font
.Bold = True
.Size = 11
.Color = RGB(255, 255, 255)
.Name = "Calibri"
End With
Ambas as versões fazem exatamente a mesma coisa — With apenas evita repetir ws.Range("A1:I1").Font três vezes.
Cores
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Bordas
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Alinhamento
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Noções básicas de formatação condicional
O VBA pode aplicar as mesmas regras que você criaria pela faixa de opções:
Dim rng As Range
Set rng = ws.Range("I2:I6") ' Status column
rng.FormatConditions.Delete ' clear any existing rules first
rng.FormatConditions.Add Type:=xlTextString, String:="Cancelled", _
TextOperator:=xlContains
rng.FormatConditions(1).Interior.Color = RGB(255, 199, 206)
rng.FormatConditions(1).Font.Color = RGB(156, 0, 6)
Execute este código e todo pedido com status "Cancelled" recebe automaticamente um destaque em tom avermelhado — e, diferente da formatação manual, a regra permanece ativa caso o valor de Status seja alterado posteriormente.
Tarefa
- Negrito na linha de cabeçalho (
A1:I1), preenchimento verde escuro (RGB(24, 106, 60)) e fonte branca (RGB(255, 255, 255)) — tudo via código, não manualmente. - Adicionar bordas finas cinza (
RGB(200, 200, 200)) ao redor de toda a tabela usandoCurrentRegion. - Adicionar uma formatação condicional que destaque qualquer pedido com
Discount % >= 10em amarelo (RGB(255, 235, 156)).
1. Formatação da linha de cabeçalho
Font.Bold,Interior.ColoreFont.Colorpodem ser definidos no mesmo intervalo.- O preenchimento verde escuro exige um triplo RGB; fonte branca é o valor RGB mais simples possível.
- Um bloco
With...End Withevita repetirws.Range("A1:I1")três vezes.
2. Adicionando bordas com CurrentRegion
CurrentRegionem A1 seleciona toda a tabela sem precisar saber ou fixar quantas linhas existem.- Bordas possuem três propriedades a serem definidas juntas:
LineStyle,WeighteColor— cinza fino significaxlThine um valor RGB cinza claro.
3. Formatação condicional para Discount % >= 10
- Trata-se de uma comparação numérica, não textual, então o tipo de condição é xlCellValue com xlGreaterEqual — diferente do exemplo de texto “Cancelled” mostrado anteriormente no capítulo.
- O detalhe importante: Discount % é armazenado como decimal (10% = 0,1), então o valor de comparação em Formula1 deve ser "0.1", não "10".
- Sempre limpe as formatações condicionais existentes nesse intervalo antes, ou execuções repetidas da macro acumularão regras duplicadas.
Sub FormatOrdersTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
' --- 1. Header row formatting ---
With ws.Range("A1:I1")
.Font.Bold = True
.Interior.Color = RGB(24, 106, 60)
.Font.Color = RGB(255, 255, 255)
End With
' --- 2. Borders around the full table ---
With ws.Range("A1").CurrentRegion.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
' --- 3. Conditional format for Discount % >= 10 ---
Dim discountRange As Range
Set discountRange = ws.Range("G2:G6")
discountRange.FormatConditions.Delete
discountRange.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreaterEqual, Formula1:="0.1"
discountRange.FormatConditions(1).Interior.Color = RGB(255, 235, 156)
End Sub
Obrigado pelo seu feedback!