Sou principiante em programação e iniciei meus estudos em VBA. Fiz um userform que nele se encontra valores. Por exemplo a quantidade de cédulas e moedas. Em um textbox você coloca a quantidade de moedas e no outro aparece o resultado da multiplicação. E ao final é somado todos os textbox. Acontece que a soma não aparece os centavos, ou seja o calculo de 1 moeda de 0,01 + 1 moeda de 0,25 e mais 1 moeda de 1,00, o resultado deveria ser 1,26, na soma aparece 1,00. Já declarei a variável como double. Já formatei como format(textbox1, "0.00"). Como fazer para somar corretamente?
3 participantes
[Resolvido]Fazer soma em VBA com centavos
JFrancisco- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 4
Registrado : 08/12/2015
- Mensagem nº1
[Resolvido]Fazer soma em VBA com centavos
gilberlanio- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 814
Registrado : 30/08/2010
- Mensagem nº2
Re: [Resolvido]Fazer soma em VBA com centavos
Seu campo na tabela está formatado dessa forma?
JFrancisco- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 4
Registrado : 08/12/2015
- Mensagem nº3
Fazer soma em VBA com centavos
Gilberlânio, bom dia!
Muito obrigado pelo teu interesse. Acontece que esse userform só tem a função de mostrar os resultados na tela, ou seja, o sistema que estou desenvolvendo é um protótipo de um controle de caixa. A pessoa faz o lançamento e o saldo vai aparecendo em uma label. O sistema já está rodando, faltando alguns ajustes. Então eu pensei em fazer uma tela em que o usuário colocasse as quantidades de cédulas que ele tem em mãos e o sistema verifica o saldo do caixa e dá a soma dos valores em cédulas e moedas, indicando ao final em outra label, se o valor em espécie está igual ao do saldo de caixa. Deu para entender?
Muito obrigado pelo teu interesse. Acontece que esse userform só tem a função de mostrar os resultados na tela, ou seja, o sistema que estou desenvolvendo é um protótipo de um controle de caixa. A pessoa faz o lançamento e o saldo vai aparecendo em uma label. O sistema já está rodando, faltando alguns ajustes. Então eu pensei em fazer uma tela em que o usuário colocasse as quantidades de cédulas que ele tem em mãos e o sistema verifica o saldo do caixa e dá a soma dos valores em cédulas e moedas, indicando ao final em outra label, se o valor em espécie está igual ao do saldo de caixa. Deu para entender?
walisilva- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 34
Registrado : 10/09/2015
- Mensagem nº4
Re: [Resolvido]Fazer soma em VBA com centavos
Se você está calculando no VBA, use Cdbl() nos campos para convertê-los para Duplo ou Double.
.................................................................................
--
Walison Silva
JFrancisco- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 4
Registrado : 08/12/2015
- Mensagem nº5
Re: [Resolvido]Fazer soma em VBA com centavos
Walisilva, bom dia!
Veja a codificação abaixo. Fiz as alterações propostas por você e mesmo assim quando mando calcular não aparecem os centavos. O sistema pega cada quantidade de moedas e multiplica pelo seu valor e o resultado só apresenta o valor sem os centavos.
Public Sub CommandButton1_Click()
Dim cedula2, cedula5, cedula10, cedula20, cedula50, cedula100 As Double
Dim moeda01, moeda05, moeda10, moeda25, moeda50, moeda1 As Double
Dim cedulas, moedas As Double
Dim saldototal As Double
cedula2 = 2
cedula5 = 5
cedula10 = 10
cedula20 = 20
cedula50 = 50
cedula100 = 100
moeda01 = 0.01
moeda05 = 0.05
moeda10 = 0.1
moeda25 = 0.25
moeda50 = 0.5
moeda1 = 1
saldo = 0
TextBox7 = CDbl(TextBox1 * cedula2)
TextBox8 = CDbl(TextBox2 * cedula5)
TextBox9 = CDbl(TextBox3 * cedula10)
TextBox10 = CDbl(TextBox4 * cedula20)
TextBox11 = CDbl(TextBox5 * cedula50)
TextBox12 = CDbl(TextBox6 * cedula100)
TextBox15 = CDbl(TextBox14 * moeda01)
TextBox16 = CDbl(TextBox17 * moeda05)
TextBox18 = CDbl(TextBox19 * moeda10)
TextBox20 = CDbl(TextBox21 * moeda25)
TextBox22 = CDbl(TextBox23 * moeda50)
TextBox24 = CDbl(TextBox25 * moeda1)
cedulas = CDbl(Val(TextBox7.Text) + Val(TextBox8.Text) + Val(TextBox9.Text) + Val(TextBox10.Text) + Val(TextBox11.Text) + Val(TextBox12.Text))
moedas = CDbl(Val(TextBox15.Text) + Val(TextBox16.Text) + Val(TextBox18.Text) + Val(TextBox20.Text) + Val(TextBox22.Text) + Val(TextBox24.Text))
TextBox13 = CDbl(cedulas)
TextBox26 = CDbl(moedas)
Label24 = CDbl(Label3 - cedulas - moedas)
End Sub
Private Sub CommandButton2_Click()
Unload frmCONTROLE
frmContabilidade.Show
End Sub
Public Sub UserForm_Initialize()
saldo_inicial = Plan2.Range("c2")
receitas = WorksheetFunction.SumIf(Plan1.Range("c2:c10000"), Plan1.Range("I20"), Plan1.Range("e2:e100000"))
despesas = WorksheetFunction.SumIf(Plan1.Range("c2:c10000"), Plan1.Range("I21"), Plan1.Range("e2:e100000"))
saldo_final = saldo_inicial + receitas - despesas
frmCONTROLE.Label3.Caption = Format$(saldo_final, "R$ ##,##0.00")
End Sub
Onde está o erro?
Veja a codificação abaixo. Fiz as alterações propostas por você e mesmo assim quando mando calcular não aparecem os centavos. O sistema pega cada quantidade de moedas e multiplica pelo seu valor e o resultado só apresenta o valor sem os centavos.
Public Sub CommandButton1_Click()
Dim cedula2, cedula5, cedula10, cedula20, cedula50, cedula100 As Double
Dim moeda01, moeda05, moeda10, moeda25, moeda50, moeda1 As Double
Dim cedulas, moedas As Double
Dim saldototal As Double
cedula2 = 2
cedula5 = 5
cedula10 = 10
cedula20 = 20
cedula50 = 50
cedula100 = 100
moeda01 = 0.01
moeda05 = 0.05
moeda10 = 0.1
moeda25 = 0.25
moeda50 = 0.5
moeda1 = 1
saldo = 0
TextBox7 = CDbl(TextBox1 * cedula2)
TextBox8 = CDbl(TextBox2 * cedula5)
TextBox9 = CDbl(TextBox3 * cedula10)
TextBox10 = CDbl(TextBox4 * cedula20)
TextBox11 = CDbl(TextBox5 * cedula50)
TextBox12 = CDbl(TextBox6 * cedula100)
TextBox15 = CDbl(TextBox14 * moeda01)
TextBox16 = CDbl(TextBox17 * moeda05)
TextBox18 = CDbl(TextBox19 * moeda10)
TextBox20 = CDbl(TextBox21 * moeda25)
TextBox22 = CDbl(TextBox23 * moeda50)
TextBox24 = CDbl(TextBox25 * moeda1)
cedulas = CDbl(Val(TextBox7.Text) + Val(TextBox8.Text) + Val(TextBox9.Text) + Val(TextBox10.Text) + Val(TextBox11.Text) + Val(TextBox12.Text))
moedas = CDbl(Val(TextBox15.Text) + Val(TextBox16.Text) + Val(TextBox18.Text) + Val(TextBox20.Text) + Val(TextBox22.Text) + Val(TextBox24.Text))
TextBox13 = CDbl(cedulas)
TextBox26 = CDbl(moedas)
Label24 = CDbl(Label3 - cedulas - moedas)
End Sub
Private Sub CommandButton2_Click()
Unload frmCONTROLE
frmContabilidade.Show
End Sub
Public Sub UserForm_Initialize()
saldo_inicial = Plan2.Range("c2")
receitas = WorksheetFunction.SumIf(Plan1.Range("c2:c10000"), Plan1.Range("I20"), Plan1.Range("e2:e100000"))
despesas = WorksheetFunction.SumIf(Plan1.Range("c2:c10000"), Plan1.Range("I21"), Plan1.Range("e2:e100000"))
saldo_final = saldo_inicial + receitas - despesas
frmCONTROLE.Label3.Caption = Format$(saldo_final, "R$ ##,##0.00")
End Sub
Onde está o erro?
walisilva- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 34
Registrado : 10/09/2015
- Mensagem nº6
Re: [Resolvido]Fazer soma em VBA com centavos
Use o Cdbl() em cada campo do form individualmente conforme exemplo abaixo:
- Código:
TextBox7 = CDbl(TextBox1) * CDbl(cedula2)
.................................................................................
--
Walison Silva
JFrancisco- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 4
Registrado : 08/12/2015
- Mensagem nº7
Re: [Resolvido]Fazer soma em VBA com centavos
Walison Silva, bom dia!
Fiz e deu resultado positivo. Muito obrigado a você e a todos que me ajudaram.
abraços
JFrancisco
Fiz e deu resultado positivo. Muito obrigado a você e a todos que me ajudaram.
abraços
JFrancisco
walisilva- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 34
Registrado : 10/09/2015
- Mensagem nº8
Re: [Resolvido]Fazer soma em VBA com centavos
É um prazer imenso poder colaborar com o fórum! Até mais.
.................................................................................
--
Walison Silva