Este código formato moeda no textbox enquanto você digita funciona da mesma maneira do caixa eletrônico ou internet banking.
O visual do seu formulário vai mudar completamente com esta funcionalidade de interação com a pessoa que digita os valores monetários.
.
História do formato moeda no textbox?
Estava conversando com um amigo e o mesmo estava reclamando que não havia nada na internet em VBA que ajudasse para formatar o textbox enquanto digita.
Quando achava algo parecido era depois que a pessoa saia do campo ou em outra linguagem.
Então para ajudar resolvi eu mesmo fazer, ou seja, como vários outros códigos você só encontra aqui.
Mas afinal pra que serve isso?
E para quem ainda não entendeu basta dizer que o separador das casas (1000.) e a vírgula aparece automaticamente enquanto digita, sem precisar sair do textbox para visualizar a mudança
Código para copiar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
Sub formataMoeda() valor = TextBox1.Value If IsNumeric(valor) Then If InStr(1, valor, "-") >= 1 Then valor = Replace(valor, "-", "") 'retira sinal negativo If InStr(1, valor, ",") >= 1 Then valor = CDbl(Replace(valor, ",", "")) 'retirar a virgula If InStr(1, valor, ".") >= 1 Then valor = Replace(valor, ".", "") 'para trabalhar melhor retiramos ponto Select Case Len(valor) 'verifica casas para inserção de ponto Case 1 numPonto = "00" & valor Case 2 numPonto = "0" & valor Case 6 To 8 numPonto = Left(valor, Len(valor) - 5) & "." & Right(valor, 5) Case 9 To 11 numPonto = inseriPonto(8, valor) Case 12 To 14 numPonto = inseriPonto(11, valor) Case Else numPonto = valor End Select numVirgula = Left(numPonto, Len(numPonto) - 2) & "," & Right(numPonto, 2) TextBox1.Value = numVirgula Else If valor = "" Then Exit Sub MsgBox "Número invalido", vbCritical, "Caracter Invalido" Exit Sub End If End Sub Function inseriPonto(inicio, valor) I = Left(valor, Len(valor) - inicio) M1 = Left(Right(valor, inicio), 3) M2 = Left(Right(valor, 8), 3) F = Right(valor, 5) If (M2 = M1) And (Len(valor) < 12) Then inseriPonto = I & "." & M1 & "." & F Else inseriPonto = I & "." & M1 & "." & M2 & "." & F End If End Function |
Confesso que me diverti neste exemplo de VBA, fiz até para versão de Excel 2003!
E se vocês olharem bem na verdade é um código que trabalha com texto, um assunto bem trabalhado no ebook.
O código está pronto para ser utilizado! Agora é com você, se gostou então de uma “curtida” e/ou compartilhe.
Talvez você também ache interessante saber sobre Valores Monetários por Extenso , e neste artigo disponibilizei duas planilhas para download.
Segue vídeo explicativo