Notifications
Clear all

Máscara de Entrada - Formato de Moeda

3 Posts
2 Usuários
0 Reactions
726 Visualizações
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Olá queridos amigos do fórum, preciso de uma ajudinha quanto a máscara abaixo:

Private Sub txtValorMensal_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If IsNumeric(Me.txtValorMensal) = True Then
     Me.txtValorMensal = Replace(Me.txtValorMensal, ",", "")
     Me.txtValorMensal = Format(Me.txtValorMensal / 100, "R$ #,##0.00")     
    End If
 
    If KeyAscii = vbKeyReturn Or KeyAscii = vbKeyBack Then Exit Sub
    If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
    KeyAscii = 0
    ElseIf KeyAscii <> vbKeyDecimal Then
    End If
End Sub

Falta o seguinte ajuste: se o usuário quiser o valor de 65 mil por exemplo, o correto seria R$ 65.000,00. Mas o código acima está deixando assim: R$ 65.000,000 (três casas depois da vírgula).

Alguém pode ajudar a corrigir para que fique apenas 2 casas depois da vírgula...?

 
Postado : 10/10/2013 8:01 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente utilizar em outro evento do controle (por exemplo after update)

Private Sub txtValorMensal_AfterUpdate()
    If IsNumeric(Me.txtValorMensal) = True Then
     Me.txtValorMensal = (Me.txtValorMensal / 100)
        txtValorMensal = Format(txtValorMensal, "R$ #,##0.00")
    End If
End Sub
 
Postado : 10/10/2013 8:35 am
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Obrigado Reinaldo, funcionou apenas mudando o evento conforme você propôs.

 
Postado : 10/10/2013 9:28 am