Notifications
Clear all

Casas Decimais

13 Posts
3 Usuários
0 Reactions
4,288 Visualizações
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Pessoal, boa noite.

Gostaria de sanar uma dúvida com relação a casas decimais e Cifra R$ em frente ao valor.

Tenhos alguns textbox que apresentam resultados de multiplicações entre um número qualquer e um valor (ex: 1 x R$ 100,00, ou 2,3 x R$ 100,00).
Acontece que no textbox resultado disso....não estou conseguindo fazer o resultado aparecer com o R$.
usando:

Text_Total_HN.Value = CDec(Me.Text_QTD_HN.Value * Me.Text_P_HN.Value)

Ele apresenta um valor sem limite de cadas decimais..e sem o cifrão.
usando:

Text_Total_HN.Value = Replace(FormatCurrency(Text_Total_HN.Value, 2), "R$ ", "")

Ele até limita as casas decimais em 2..mas também não apresenta o cifrão.

Como fazer para aparecer 2 casas decimais e com a cifra??

Também notei que, em um textbox que soma todos os resultados, ele soma apenas os valores que não tem o cifrão (tenho um campo que é lido direto de uma célula e ali o cifrão aparece). Existe alguma soma diferente para ele entender os campos com cifrão??? estou usando o seguinte:

  Text_Total_Geral.Value = Val(Text_Total_PA.Value) + _
            Val(Text_Total_KM.Value) + _
            Val(Text_Total_Hotel.Value) + _
            Val(Text_Total_Refeições.Value) + _
            Val(Text_Total_HN.Value) + _
            Val(Text_Total_HE.Value) + _
            Val(Text_Total_HV.Value) + _
            Val(Text_Total_Pedágio.Value) + _
            Val(Text_Des_Outros_Valor.Value)

Finalmente, quando um valor que tem casa decimal tem que ser inserido em uma célula, o valor da célula arrendonda para baixo em um valor inteiro (1,95 vira 1...). Mesmo com a célula configurada como número de 2 casas decimais.
Aqui, estava usando:

Sheets("Relatório_Visitas").Range("C19").Value = Val(Text_QTD_HV.Value)

Mudei para:

Sheets("Relatório_Visitas").Range("C19").Value = CDec(Text_QTD_HV.Value)

Isso parece ter resolvido. Seria essa a melhor solução??

Aguardo a ajuda de vocês, por favor!

Att,
Jorge.

 
Postado : 25/10/2012 9:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente algo...

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox3.Text = Format(TextBox1 * TextBox2, "$#,##0.00")
End Sub
 
Postado : 26/10/2012 4:30 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Alexandre, bom dia!! E, Obrigado mais uma vez! Isso de fato funcionou.

Agora está faltando saber apenas porque a soma não está sendo executada corretamente!!! Ele só soma os valores que não tem o Cifrão!!

 
Postado : 26/10/2012 5:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Do Help do vba excel
"A função Val reconhece somente o ponto (.) como um separador decimal válido. Quando separadores decimais diferentes forem usados, como em aplicativos internacionais, use CDbl para converter uma seqüência em um número."
De uma olhada tambem em "Funções de conversão de tipos"

 
Postado : 26/10/2012 6:08 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Amigos,

Estou tentando de tudo aqui, mas não consigo fazer a soma de jeito nenhum!!

Tenho vários Textbox com valores, que estão formatados da seguinte forma:

Text_Total_HV.Value = Format(Me.Frame_Despesas.Text_QTD_HV * Me.Frame_Despesas.Text_P_HV, "R$ 0.00")

Isso me dá um resultado do tipo: R$ 100,00 no textbox desejado.
Então, preciso somar todos os valores no final...em um textbox Total Geral...

Já tentei usar Val, CDbl, Ccur...não está funcionando...com Val ele não soma...com CDbl ou CCur ele apresenta erro.

Vocês precisam do arquivo pra me ajudar ou tem mais alguma dica?

Outra coisa..acho que é um Bug..sei la...todos os textbox são configurados para formatar o valor como R$ na saída do text box...mas existe 2 textbox onde a formatação só acontece quando um volto para trás na tabulação...tipo shift+tab...se eu vou passando só com tab ele não formata!!! não parece ser erro na programação..visto que chega a funcionar!!

Private Sub Text_QTD_HV_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If (Me.Text_QTD_HV.Value = "") Or (Me.Text_P_HV.Value = "") Then
        Me.Text_Total_HV.Value = "0"
        Me.Text_Total_HV.Value = Format(Me.Text_Total_HV.Value, "R$ 0.00")
    Else
    Me.Text_Total_HV.Value = Format(Me.Text_QTD_HV.Value * Me.Text_P_HV.Value, "R$ 0.00")
    End If
    Me.Frame_Despesas.Text_Total_Geral.Value = Val(Me.Frame_Despesas.Text_Total_PA.Value) + Val(Me.Frame_Despesas.Text_Total_KM.Value) + Val(Me.Frame_Despesas.Text_Total_Hotel.Value) + Val(Me.Frame_Despesas.Text_Total_Refeições.Value) + Val(Me.Frame_Despesas.Text_Total_HN.Value) + Val(Me.Frame_Despesas.Text_Total_HE.Value) + Val(Me.Frame_Despesas.Text_Total_HV.Value) + Val(Me.Frame_Despesas.Text_Total_Pedágio.Value) + Val(Me.Frame_Despesas.Text_Des_Outros_Valor.Value)
End Sub

Private Sub Text_P_HV_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If (Me.Text_QTD_HV.Value = "") Or (Me.Text_P_HV.Value = "") Then
        Me.Text_Total_HV.Value = "0"
        Me.Text_Total_HV.Value = Format(Me.Text_Total_HV.Value, "R$ 0.00")
        Me.Text_P_HV.Value = Format(Me.Text_P_HV.Value, "R$ 0.00")
    Else
        Me.Text_P_HV.Value = Format(Me.Text_P_HV.Value, "R$ 0.00")
        Me.Text_Total_HV.Value = Format(Me.Text_QTD_HV.Value * Me.Text_P_HV.Value, "R$ 0.00")
    End If
    Me.Frame_Despesas.Text_Total_Geral.Value = Val(Me.Frame_Despesas.Text_Total_PA.Value) + Val(Me.Frame_Despesas.Text_Total_KM.Value) + Val(Me.Frame_Despesas.Text_Total_Hotel.Value) + Val(Me.Frame_Despesas.Text_Total_Refeições.Value) + Val(Me.Frame_Despesas.Text_Total_HN.Value) + Val(Me.Frame_Despesas.Text_Total_HE.Value) + Val(Me.Frame_Despesas.Text_Total_HV.Value) + Val(Me.Frame_Despesas.Text_Total_Pedágio.Value) + Val(Me.Frame_Despesas.Text_Des_Outros_Valor.Value)
End Sub

Idéias?

 
Postado : 28/10/2012 7:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Macabruz, como estamos lidando com vários Eventos e Frames o ideal seria postar um modelo simplificado (compactado) com poucos dados para poder analizar melhor, uma vez que pode haver alguma outra chamada no caminho que impeça a conversão.

[]s

 
Postado : 28/10/2012 10:44 am
(@hronconi)
Posts: 314
Reputable Member
 

Macabruz,

Quanto a funcionar às vezes e em outras situações não, acredito que possa ser devido ao evento que está utilizando para atualizar a formatação. (Suspeito que seja).

O ideal seria se você puder anexar uma cópia compactada de sua planilha para podermos avaliar com mais exatidão.

Att.

Henrique Ronconi

 
Postado : 28/10/2012 12:35 pm
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Amigos,

Segue o projeto mais uma vez.
Estou trabalhando no Form Comercial...conforme vai funcionando eu passo para o Técnico..

Foco agora é fazer o campo Total somar todos os totais parciais.

Agradeço mais uma vez a ajuda de vocês!

 
Postado : 28/10/2012 8:05 pm
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Pessoal, alguém conseguiu dar uma olhada nisso pra mim?

Att,
Jorge.

 
Postado : 30/10/2012 1:04 pm
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Pessoal, dando um up no post...alguém conseguiu ver alguma coisa? Estou mesmo dependendo disso pra poder voltar a utilizar essa planilha, visto que sem o Cálculo total correto não é possível gerar um relatório de onde virá uma cobrança.
Estou tentando fazer também..mas é bem complicado para alguém que começou a mexer com VBA a pouquissimo tempo!

Att,
Jorge.

 
Postado : 31/10/2012 10:57 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Pessoal, alguem me aponta o que está errado, por favor, nas programações abaixo!! nada funciona...

Preciso somar valores que estão em textboxs...mas eles tem o R$....tipo..preciso fazer...R$ 100,21 + R$ 200,05 dar exatamente R$ 300,26.

Tentei tudo que está abaixo:

'   Text_Total_Geral.Value = CCur(Text_Total_PA.Text) + _
'            Ccur(Text_Total_KM.Text) + _
'            CCur(Text_Total_Hotel.Text) + _
'            CCur(Text_Total_Refeições.Text) + _
'            CCur(Text_Total_HN.Text) + _
'            CCur(Text_Total_HE.Text) + _
'            CCur(Text_Total_HV.Text) + _
'            CCur(Text_Total_Pedágio.Text) + _
'            CCur(Text_Des_Outros_Ccuror.Text)
            
'            Text_Total_Geral.Value = CDbl(Replace(Text_Total_PA.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_KM.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_Hotel.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_Refeições.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_HN.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_HE.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_HV.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Total_Pedágio.Text, "R$ ", "")) + _
'            CDbl(Replace(Text_Des_Outros_Valor.Text, "R$ ", ""))

'            Text_Total_Geral.Value = Val(Text_Total_PA.Value) + _
'            Val(Text_Total_KM.Value) + _
'            Val(Text_Total_Hotel.Value) + _
'            Val(Text_Total_Refeições.Value) + _
'            Val(Text_Total_HN.Value) + _
'            Val(Text_Total_HE.Value) + _
'            Val(Text_Total_HV.Value) + _
'            Val(Text_Total_Pedágio.Value) + _
'            Val(Text_Des_Outros_Valor.Value)
 
Postado : 01/11/2012 6:19 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja no anexo se lhe atende

 
Postado : 02/11/2012 6:15 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Reinaldo, muito obrigado! Era exatamente o que eu precisava!

Joinha dado. Topico resolvido.

Att,
Jorge.

 
Postado : 04/11/2012 6:38 am