Planilha de controle financeiro pessoal no EXCEL com VBA e Tabela Dinâmica
- Milena Colares
- 17 de jun. de 2020
- 2 min de leitura
Atualizado: 29 de jul. de 2020

Gravamos uma série com 4 vídeos no Youtube que vai te ensinar a implementar um controle financeiro pessoal no EXCEL usando VBA (Visual Basic For Applications), tabelas dinâmicas e um gráfico dinâmico.
Download da planilha:
PARTE 1 - Apresentação do projeto
Assista ao vídeo no Youtube: https://www.youtube.com/watch?v=VN0MFp7TsMs
- Fazer um controle financeiro é importante para visualizar a distribuição de seus gastos;
- Geralmente quando olhamos o extrato do cartão, não conseguimos ter a dimensão dos nossos gastos, mas quando lançamos em uma planilha, nós damos forma aos nossos gastos e conseguimos ver de fato para onde está indo nosso dinheiro;
- Se você nunca programou em VBA, assista nosso vídeo que te dá o ponto de partida para aprender VBA. O VBA pode te ajudar a otimizar suas planilhas do EXCEL.
Aprenda VBA do zero:
PARTE 2 - Alimentação das ComboBoxes

Private Sub Workbook_Open()
Sheets("Junho").cmbTipo.Clear
Sheets("Junho").Range("Y5").Select
Do While ActiveCell.Value <> ""
Sheets("Junho").cmbTipo.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Sheets("Junho").cmbTipo.ListIndex = 0
Sheets("Junho").Range("H5").Select
End Sub

Private Sub cmbTipo_Change()
'Limpar ComboBox Descrição
cmbDescricao.Clear
'Selecionar célula para iniciar a busca dos dados
If cmbTipo.Value = "Entrada" Then
Range("Z5").Select
Else
Range("AA5").Select
End If
'Adicionar itens na ComboBox
Do While ActiveCell.Value <> ""
cmbDescricao.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
'Deixar primeiro item selecionado
cmbDescricao.ListIndex = 0
Range("H5").Select
End Sub
PARTE 3 - Criação de um extrato de lançamentos

Dim ultimaCelulaPreenchida As Range
Private Sub btnInserir_Click()
'Definir última célula preenchida da coluna de Valor (Coluna C)
Set ultimaCelulaPreenchida = Cells(Rows.Count, 3).End(xlUp)
'Se não for o primeiro registro -> Deslocar dados para baixo
If ultimaCelulaPreenchida.Row <> 8 Then
ultimaCelulaPreenchida.Select
Range("B9:C" & ultimaCelulaPreenchida.Row).Cut
Range("B10").Select
ActiveSheet.Paste
End If
Range("B9").Select
'Atribuir descrição
ActiveCell.Value = cmbDescricao.Value
'Atribuir valor
If cmbTipo.Value = "Entrada" Then
ActiveCell.Offset(0, 1).Value = Range("H5").Value
ActiveCell.Offset(0, 1).Interior.Color = RGB(153, 255, 153)
Else 'Se for uma saída...
ActiveCell.Offset(0, 1).Value = -Range("H5").Value
ActiveCell.Offset(0, 1).Interior.Color = RGB(255, 153, 153)
End If
Range("H5").Select
End Sub
PARTE 4 - Uso de tabelas dinâmicas e gráfico dinâmico

'Atualizar as tabelas dinâmicas
For Each tabela In Sheets("Junho").PivotTables
tabela.RefreshTable
tabela.PivotFields("Lançamento").ClearAllFilters
tabela.PivotFields("Lançamento").PivotItems("(blank)").Visible = False
'Personalizar a tabela de gastos
If tabela.Name = "tabelaGastos" Then
tabela.PivotFields("Lançamento").PivotFilters.Add Type:=xlValueIsLessThanOrEqualTo, DataField:=tabela.PivotFields("Soma de Valor"), Value1:=0
End If
Next tabela
Apreenda! Implemente Agora: essa é uma categoria de vídeos do nosso canal do Youtube em que te ajudamos a desenvolver suas próprias soluções, são tutoriais práticos com tudo o que você precisa para implementar.
acompanhei e me meu uma ideia legal