Visual Basic - Calculadora Financeira usando VBA
Neste artigo vamos criar uma calculadora 'financeira' que usa os recursos de cálculo do Excel através do VBA - Visual Basic for Applications. Antes um pouco de história... |
Originalmente o Excel foi desenvolvido para o Macintosh. Na verdade ela tornou-se a planilha eletrônica mais popular para a plataforma Macintosh. Esta popularidade era devida em parte pelo seu grande poder de realizar cálculos e em parte por possuir uma linguagem de macros muito fácil de aprender.
Quando a Microsoft portou o Excel para o PC ele veio com a mesma linguagem de macros usadas no Macintosh. Como todos sabem o Excel também tornou-se a planilha eletrônica mais popular no ambiente PC desbancando poderosos concorrentes (lembra do Lotus ?).
Foi então que a Microsoft tomou a decisão de introduzir a tecnologia OLE (Object Linking and Embedding) no Excel. Afim de suportar OLE no Excel , a Microsoft substituiu a sua linguagem de macros por uma nova linguagem de macros : o VBA ou Visual Basic for Applications. A versão 5.0 do Excel foi a primeira aplicação que incluía o VBA.
Isto acarretou mudanças também na linguagem Visual Basic. Antes disto o VB era escrito em assembler o que portar o VB para 32 bits não era nada fácil , mas a partir desta data o VB passou a ser escrito em C o que permitia uma fácil portabilidade para o ambiente de 32 bits. Ao fazer esta jogada a Microsoft sinalizava com o seguinte:
O modelo de objetos do Excel é um modelo extenso e com muitos recursos , o mais importante é que ao abrir o Excel todo este modelo é exposto e pode ser usado pelos desenvolvedores através da automação OLE.
É isto que vamos fazer mostrando como criar uma calculadora usando recursos do Excel via OLE.
Inicie um novo projeto no VB (Menu File | New Project) e pressione F4 para exibir as propriedades do formulário padrão form1. Agora faça o seguinte:
O layout do formulário após a inclusão dos componentes é exibido abaixo:
Componentes usados
no projeto: - 2 Frames - Para separar os dados de empréstimo do pagamento - 4 TextBoxes - Para receber o valor(txtEmprestimo) , taxa de juros(txtTaxa) e período(txtmeses) e exibir o pagamento(txtPagamento) - 4 Labels - para dar nome as caixas de texto. - 2 Command Buttons - Calcular(cmdCalcular) e Sair(cmdSair) - 1 Componente UpDow Button - Para selecionar o período em meses Obs: Para obter o componente UpDow Button no menu Project selecione Components e marque o componente Microsoft Windows Common Controls 2. |
Para que o componente funcione de forma sincronizada com a caixa de texto - txtmeses.txt - precisamos fazer a seguinte configuração:
Na seção General Declarations do formulário inclua a seguinte linha de código onde estamos alocando espaço para a variável excelObj que será usada no projeto e será visível por toda a aplicação.
Option Explicit
Dim excelObj As Excel.Application
Agora no evento Click do botão - Calcular - insira o código abaixo:
Private Sub cmdCalcular_Click() 1 Dim dtaxa As Double Dim curPagamento As Currency Dim curEmprestimo As Currency Dim imeses As Integer 2 Screen.MousePointer = vbHourglass 3 If ExcelObj Is Nothing Then Set ExcelObj = New Excel.Application End If 4 dtaxa = CDbl(txtTaxa.Text) imeses = CInt(txtmeses.Text) curEmprestimo = CCur(txtEmprestimo.Text) 5 curPagamento = ExcelObj.Pmt((dtaxa / 100) , imeses , -1 * curEmprestimo) 6 txtPagamento.Text = Format(curPagamento, "R$#,##0.00") 7 Screen.MousePointer = vbDefault End Sub |
Vamos explicar o código usando os números a esquerda das linhas de código:
1 Aqui estamos dimensionando as variáveis necessárias. Note o tipo de dados Currency ; as variáveis deste tipo são armazenadas como número de 64-bits (8 bytes) em um formato inteiro. O intervalo de valores vai de -922,337,203,685,477.5808 a 922,337,203,685,477.5807.
2 Alteramos o ponteiro do mouse para uma ampulheta , se o processo demorar um pouco o usuário tem um sinal visual disto.
3 Nestas linhas de códigos estamos usando o comando New. Este comando irá iniciar a aplicação Excel. A cada clique no botão de comando - Calcular - uma um objeto Excel seria criado , por isto somente usamos o comando New quando a variável objeto não esta instanciada ou seja seu valor for igual a Nothing. Esta linha de código é que consome mais recursos do sistema.
4 Neste código estou convertendo todos os valores de Strings para números. Assim temos:
5 Estou usando a função do Excel para realizar os cálculos
6 O resultado é exibido na caixa de texto formato usando a notação R$
7 O ponteiro do mouse retorna ao formato padrão
Para encerrar vamos incluir o código do evento Click do botão - Sair :
Private Sub cmdSair_Click() Unload me End Sub |
e no evento Unload do formulário vamos incluir o seguinte código:
Private Sub Form_Unload(Cancel As Integer) If Not excelObj Is Nothing Then excelObj.Quit Set excelObj = Nothing End If End Sub |
Este código é muito importante, Vejamos:
Lembre-se que sua aplicação VB esta iniciando o aplicativo Excel , embora ele permaneça oculto. Para evitar deixar o programa Excel aberto quando você encerrar o programa incluímos o código acima no evento Unload de forma que sempre que o formulário for descarregado estou verificando se o objeto Excel esta vivo ou não (excelObj is Nothing) , e , estou encerrando o Excel e destruindo a instância do objeto excelObj criado. (Por isto não estou usando End no evento Click do botão Sair.)
Nota: A sintaxe da função
PMT no Excel é : PMT(taxa,
nper, PV, FV, Tipo) onde:
taxa = a taxa de
juros para o empréstimo
ou de forma resumida =PMT(valor da taxa de juros;Quantidade de prestações;Valor total da dívida) Ex: Se você for financiar uma carro que custa R$
10.000,00, a taxa de juros cobrada pela loja é de 8% ao ano se
você pagar em 10 vezes. Utilizando a Função de pagamento (PMT),
ficaria assim a disposição dessas informações no Excel: Obs: A função equivalente para o Excel em português é PGTO mas no VBA usamos sempre PMT |
Fazendo o cálculo o valor da prestação seria : R$ 1.037,03. Vamos conferir usando o programa VB :
Da mesma forma que usamos a função PMT você pode incrementar o projeto com outras funções do Excel.
Na continuação vamos incluir um objeto OLE para funcionar como uma planilha Excel , aguarde...
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Controle Financeiro Pessoal - Macoratti
C# - Calculadora de Empréstimos - EMI - Macoratti
VB .NET - Sistema para Controle Financeiro (Saldo Bancário) - Macoratti
VB .NET - Geração e controle de parcelamentos - Macoratti
ASP .NET Core - Gerenciador de Despesas Pessoais com ... - Macoratti
Calculadora financeira usando VBA - Macoratti
VB .NET - Agendamento de Eventos - Macoratti