USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Problema com textbox moeda!
tytazinha
EMBU
SP - BRASIL
ENUNCIADA !
Postada em 19/07/2012 09:14 hs         
Olá pessoal bom dia meu Nome é Patricia, para os mais intimos "Paty" rsrs
brincadeiras a parte vamos ao que "me" interessa, bom sou novata em VB, e mais novata
ainda aqui no site, que alias achei o maximo, parabéns a todos, enfim minha duvida
ou melhor meu problema é o seguinte:ve se vcs entendem meu raciocínio.

Private Sub TxtValorPago_LostFocus()

'verifico se foi digitado algo (detalhe só aceita numeros e virgula)
If TxtValorPago.Text = "" Then
TxtValorPago.Text = "R$ 0,00"
Else
TxtValorPago = Format(TxtValorPago.Text, "currency")
TxtTroco.Text = CDbl(TxtValorDaCompra.Text) - CDbl(TxtValorPago.Text)
End If
'ate aqui tudo perfeito, o problema é que as vezes ao digitar 1,5 ou 1,50
'o numero UM (1) falha e sai ,5 ou ,50 dai o erro.
' oq eu quero é interceptar o valor antes de subtrair algo do tipo:
If TxtValorPago.Text <> Format(TxtValorPago.Text) Then
'ou
If TxtValorPago.Text <> Format(TxtValorPago.Text, "currency") Then
MsgBox "O VALOR DIGITADO NÃO É VALIDO", vbInformation, "MENSAGEM"
Else
TxtValorPago = Format(TxtValorPago.Text, "currency")
TxtTroco.Text = CDbl(TxtValorDaCompra.Text) - CDbl(TxtValorPago.Text)
End If

End Sub

se alguem puder me ajudar agradeço desde ja..Paty
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 19/07/2012 11:42 hs            
Patricia ola e seja bem vinda.

você pretende formatar um valor ao perder o foco, eu possuo uma função que formata o valor moeda durante a digitação.
   
tytazinha
EMBU
SP - BRASIL
ENUNCIADA !
Postada em 19/07/2012 11:57 hs         
Olá Treze! muito obrigada pela gentileza.
O que eu tenho em mente é verificar se o valor digitado no textbox esta no formato moeda "currency", meu textbox esta formatado pra receber apenas numeros e virgula.
Ex. se o textbox estiver embranco quando perder o foco, ele preenche com "R$ o,oo", mas se eu digitar apenas a , Virgula  ele aceita e não muda para "R$ 0,00" e me da um erro quando vai somar os valores.

No meu humilde raciocinio pensei, se eu configurar o textbox pra aceitar apenas uma virgula, o cliente não vai poder digitar mais que uma virgula, dai eu pego o que ele digitou.Ex:

if textbox.text = "," then
msgbox "VALOR DIGITADO INVALIDO"
else
executa a operação matematica
end if

Me desculpe se não to conseguindo me expressar corretamente

Obrigada por responder
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 19/07/2012 12:19 hs            
então como eu disse eu tenho uma função em que o cliente não precisa digitar virgula ponto ou etc, no caso o valor será configurado automáticamente o cliente vai digitar apenas numeros, ex:

digou 123

ja vai incluir a virgula 1,23

se digitar 123456

vai ficar 1.234,56

isso em tempo de digitação
bom vou procurar a função e posto pra você
   
tytazinha
EMBU
SP - BRASIL
ENUNCIADA !
Postada em 19/07/2012 12:29 hs         
Humm interesante, e como eu consigo essa função?
Apesar que eu acredito que o cliente vai se perder, não sabera quando 55 é 55,00 ou 5,50
mas a principio ja ajuda muito.
   
tytazinha
EMBU
SP - BRASIL
ENUNCIADA !
Postada em 19/07/2012 12:48 hs         
Treze eu consegui resolver com esse codigo aqui:

Private Sub TxtValorPago_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{Tab}"
KeyAscii = 0
End If
If KeyAscii = 8 Then
If Len(TxtValorPago) > 0 Then
TxtValorPago = Left(TxtValorPago, Len(TxtValorPago) - 1)
End If
If TxtValorPago = "" Then
Exit Sub
End If
TxtValorPago = Replace(TxtValorPago, ",", "")
TxtValorPago = Replace(TxtValorPago, ".", "")
TxtValorPago = Format(TxtValorPago / 100, "###,##0.00")
ElseIf KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then
If KeyAscii <> 8 And KeyAscii <> Asc(",") And KeyAscii <> Asc(".") Then
TxtValorPago.SelStart = Len(TxtValorPago)
TxtValorPago = TxtValorPago & Chr(KeyAscii)
End If
If TxtValorPago = "" Then
Exit Sub
End If
TxtValorPago = Replace(TxtValorPago, ",", "")
TxtValorPago = Replace(TxtValorPago, ".", "")
TxtValorPago = Format(TxtValorPago / 100, "###,##0.00")
End If
KeyAscii = 0
End Sub

mas não gostei dessa solução, se tivesse outra forma seria bem melhor
esse código faz exatamente oq vc disse da sua função, ele vai preenchendo os valores, e colocando ponto e virgula, dai quando perde o foco eu transforme em currency, mas como eu disse não ficou do meu agrado..vou continuar procurando outra solução, mesmo assim estou aberta a mais dicas e soluções.
   
Página(s): 1/4      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página