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.

https://youtu.be/qNJWPF_8fCo

🧠 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!

Carrinho de compras