
Como criar uma barra de progresso automática no Excel (Checklist inteligente com VBA)
Esse é o segundo vídeo da série onde estamos transformando uma planilha simples em um sistema inteligente.
Depois de criar o checklist clicável, agora vamos adicionar algo ainda mais útil e visual:
uma barra de progresso automática, que cresce ou diminui conforme você marca ou desmarca as tarefas.
O recurso é perfeito para:
- dashboards
- rotinas de produtividade
- acompanhamento de projetos
- listas de tarefas profissionais
E claro, tudo funcionando em tempo real.
Como funciona a barra de progresso?
O código conta:
- quantas tarefas existem na coluna C
- quantas estão marcadas como concluídas na coluna B
Com isso ele calcula a porcentagem e atualiza:
- G1 → porcentagem
- G2 → barra visual feita com blocos de texto
Nada de gráfico, é tudo criado por texto e VBA.
🧠 Pega o Código!
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Celula As Range
Dim TotalTarefas As Long, TarefasConcluidas As Long
Dim Progresso As Double
Dim Blocos As Long
Dim blocoChar As String
' caractere para a barra de progresso
blocoChar = ChrW(&H2588)
' Coluna do checklist (B6:B100)
If Not Intersect(Target, Me.Range("B6:B100")) Is Nothing Then
Cancel = True
Set Celula = Target
With Celula
If .Value = ChrW(&H2705) Then
.Value = ""
Me.Range("B" & .Row & ":D" & .Row).Interior.Color = RGB(242, 242, 242)
Me.Range("D" & .Row).ClearContents
Else
.Value = ChrW(&H2705)
Me.Range("B" & .Row & ":D" & .Row).Interior.Color = RGB(146, 208, 80)
Me.Range("D" & .Row).Value = Now
Me.Range("D" & .Row).NumberFormat = "dd/mm/yy hh:mm"
End If
End With
End If
' Cálculo do progresso
TotalTarefas = Application.WorksheetFunction.CountA(Me.Range("C6:C100"))
TarefasConcluidas = Application.WorksheetFunction.CountIf(Me.Range("B6:B100"), ChrW(&H2705))
If TotalTarefas > 0 Then
Progresso = TarefasConcluidas / TotalTarefas
Else
Progresso = 0
End If
' Atualização da porcentagem e barra
Me.Range("G1").Value = Format(Progresso, "0%")
Blocos = Int(Progresso * 20)
If Blocos > 0 Then
Me.Range("G2").Value = String(Blocos, blocoChar)
Else
Me.Range("G2").ClearContents
End If
' Visual
With Me.Range("G2")
.Font.Name = "Consolas"
.Font.Size = 12
.Font.Bold = True
.Font.Color = RGB(0, 120, 0)
.HorizontalAlignment = xlCenter
End With
' Fonte da coluna B
Me.Range("B6:B100").Font.Name = "Segoe UI Emoji"
Me.Range("B6:B100").Font.Size = 12
End Sub
Resultado Final
✔️ Checklist inteligente
✔️ Barra de progresso automática
✔️ Porcentagem dinâmica
✔️ Código simples e totalmente adaptável
Essa técnica é excelente pra deixar qualquer planilha mais visual e interativa.
Download Barra de Progresso Automática
Até o próximo SelfBlog!
Fique ligado no nosso canal do Youtube para mais conteúdo de Excel VBA!



