Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sweet-tooth

Usando currency e calculando troco

Recommended Posts

Eu to mexendo na tela de venda,e agora estou na parte que é calculado o valor total da compra,é registrado o pagamento do cliente e calculado o troco.O problema,é que as textbox onde é armazenado o valor total,e a textbox onde é digitado a quantia paga estão formatadas como currency,e na hora que vou realizar a operação:troco = Val(Textpagamento) - Val(texttotal) 20 15Assim o valor de troco é = 0Se eu tirar o currency:troco = Val(Textpagamento) - Val(texttotal) 20 15troco = 5.Tem como eu realizar operações aritmeticas usando formatação currency?Ah,outra coisa,tem como criar um esquema que encerre a operação se o valor digitado no pagamento for menor que o total?Eu fiz com currency e não deu certo,apenas depois que tirei a formatação.If val(Textpagamento) < val(texttotal) Then MsgBox "O valor recebido é menor do que o total da compra!", vbCritical, "Operação Inválida" Exit Sub End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

O fato é que quando você passar os valores para currency no formato brasileiro é colocado a vírgula como separador decimal.E se você fizer as contas com essa vírgula realmente dará errado.O que você pode fazer é na hora das contas substituir a vírgula por ponto com, por exemplo, a função Replace.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O fato é que quando você passar os valores para currency no formato brasileiro é colocado a vírgula como separador decimal.E se você fizer as contas com essa vírgula realmente dará errado.O que você pode fazer é na hora das contas substituir a vírgula por ponto com, por exemplo, a função Replace.

beleza Luizgrs?Eu formatei aqui com replace,mas achei que ficou ruim,onde eu digito 20 e deveria ficar R$20,00 ficou R$ 20.000.00 (20 mil?)Tem como arrumar isso?Eu usei soma = VBA.Format(texttotal, "currency")texttotal = Replace(soma, ",", ".")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse exemplo que você mostrou note que a transformação para curency é inútil. Você poderia utilizar o replace já com o valor da textbox.

 

Eu fiz uns teste com valores como "R$20,00", "20,00" e "R$ 20,00" e todos retornaram corretamente com a vírgula substituída por ponto. Fiz isso do mesmo jeito que você postou:

x = VBA.Format(Text1, "currency")MsgBox Replace(x, ",", ".")

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.