Este código formato moeda no textbox enquanto você digita funciona da mesma maneira do caixa eletrônico ou internet banking.

formato moeda no textboxO 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

máscara moeda vba

formatação formulario

Código para copiar

 

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