FORMATO MOEDA
Pessoal,
Como vão? Segue código de uma função para formato moeda sem R$ com capacidade para valores até 999.999.999,99.
Tlavez eu esteja reiventando a roda, mas se alguém puder cverificar e melhorar o código ficaria agradecido.
Segue código fonte:
[ô]Em uma Classe
Public Function FORMATAR_MOEDA(ByVal TXTTEXTO As TextBox, ByVal KeyAscii As Byte) As String
Dim VALOR_MOEDA As String
Dim VALOR_TEXTO As String
Dim VALOR As Decimal
Dim i As Integer
FORMATAR_MOEDA = [Ô][Ô]
VALOR_MOEDA = [Ô][Ô]
VALOR_TEXTO = [Ô][Ô]
VALOR = 0
VALOR_TEXTO = TXTTEXTO.Text
VALOR_TEXTO = Replace(VALOR_TEXTO, [Ô],[Ô], [Ô][Ô])
VALOR_TEXTO = Replace(VALOR_TEXTO, [Ô].[Ô], [Ô][Ô])
If TXTTEXTO.Text <> String.Empty Then
TXTTEXTO.MaxLength = 14
For i = 1 To VALOR_TEXTO.Length
If IsNumeric(Mid(VALOR_TEXTO, i, 1)) = True Then
VALOR_MOEDA = VALOR_MOEDA & (Mid(VALOR_TEXTO, i, 1))
End If
Next i
If VALOR_TEXTO.Length > 11 Then
VALOR_MOEDA = Left(VALOR_TEXTO, 11)
End If
If VALOR_MOEDA.Length = 1 Then
VALOR_MOEDA = [Ô]0,0[Ô] & VALOR_MOEDA
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR
ElseIf VALOR_MOEDA.Length = 2 Then
VALOR_MOEDA = [Ô]0,[Ô] & VALOR_MOEDA
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR
ElseIf VALOR_MOEDA.Length >= 3 And VALOR_MOEDA.Length <= 5 Then
VALOR_MOEDA = Left(VALOR_MOEDA, VALOR_MOEDA.Length - 2) & [Ô],[Ô] & Right(VALOR_MOEDA, 2)
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR
ElseIf VALOR_MOEDA.Length >= 6 And VALOR_MOEDA.Length < 9 Then
VALOR_TEXTO = [Ô][Ô]
VALOR_TEXTO = Left(VALOR_MOEDA, Len(VALOR_MOEDA) - 5) & [Ô].[Ô]
VALOR_TEXTO = VALOR_TEXTO & Mid(VALOR_MOEDA, Len(VALOR_TEXTO), 3) & [Ô],[Ô]
VALOR_TEXTO = VALOR_TEXTO & Right(VALOR_MOEDA, 2)
TXTTEXTO.Text = VALOR_TEXTO
ElseIf VALOR_MOEDA.Length >= 9 And VALOR_MOEDA.Length <= 11 Then
VALOR_TEXTO = [Ô][Ô]
VALOR_TEXTO = Left(VALOR_MOEDA, Len(VALOR_MOEDA) - 8) & [Ô].[Ô]
VALOR_TEXTO = VALOR_TEXTO & Mid(VALOR_MOEDA, Len(VALOR_TEXTO), 3) & [Ô].[Ô]
VALOR_TEXTO = VALOR_TEXTO & Mid(VALOR_MOEDA, (Len(VALOR_MOEDA) - 4), 3) & [Ô],[Ô]
VALOR_TEXTO = VALOR_TEXTO & Right(VALOR_MOEDA, 2)
TXTTEXTO.Text = VALOR_TEXTO
End If
If KeyAscii = 46 Then
TXTTEXTO.SelectionStart = 0
ElseIf KeyAscii = 37 Or KeyAscii = 39 Or KeyAscii = 35 Or KeyAscii = 36 Then
Else
TXTTEXTO.SelectionStart = Len(TXTTEXTO.Text) + 1
End If
FORMATAR_MOEDA = TXTTEXTO.Text
Else
VALOR_MOEDA = [Ô]0,00[Ô]
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR_MOEDA
TXTTEXTO.SelectionStart = Len(TXTTEXTO.Text) + 1
FORMATAR_MOEDA = TXTTEXTO.Text
End If
End Function
[ô]No Evento KeyUp
With Me
With .TXT_VALOR
.Text = Classe1.FORMATAR_MOEDA(TXT_VALOR, e.KeyValue)
End With
End With
Bom aguardo resposta.
Como vão? Segue código de uma função para formato moeda sem R$ com capacidade para valores até 999.999.999,99.
Tlavez eu esteja reiventando a roda, mas se alguém puder cverificar e melhorar o código ficaria agradecido.
Segue código fonte:
[ô]Em uma Classe
Public Function FORMATAR_MOEDA(ByVal TXTTEXTO As TextBox, ByVal KeyAscii As Byte) As String
Dim VALOR_MOEDA As String
Dim VALOR_TEXTO As String
Dim VALOR As Decimal
Dim i As Integer
FORMATAR_MOEDA = [Ô][Ô]
VALOR_MOEDA = [Ô][Ô]
VALOR_TEXTO = [Ô][Ô]
VALOR = 0
VALOR_TEXTO = TXTTEXTO.Text
VALOR_TEXTO = Replace(VALOR_TEXTO, [Ô],[Ô], [Ô][Ô])
VALOR_TEXTO = Replace(VALOR_TEXTO, [Ô].[Ô], [Ô][Ô])
If TXTTEXTO.Text <> String.Empty Then
TXTTEXTO.MaxLength = 14
For i = 1 To VALOR_TEXTO.Length
If IsNumeric(Mid(VALOR_TEXTO, i, 1)) = True Then
VALOR_MOEDA = VALOR_MOEDA & (Mid(VALOR_TEXTO, i, 1))
End If
Next i
If VALOR_TEXTO.Length > 11 Then
VALOR_MOEDA = Left(VALOR_TEXTO, 11)
End If
If VALOR_MOEDA.Length = 1 Then
VALOR_MOEDA = [Ô]0,0[Ô] & VALOR_MOEDA
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR
ElseIf VALOR_MOEDA.Length = 2 Then
VALOR_MOEDA = [Ô]0,[Ô] & VALOR_MOEDA
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR
ElseIf VALOR_MOEDA.Length >= 3 And VALOR_MOEDA.Length <= 5 Then
VALOR_MOEDA = Left(VALOR_MOEDA, VALOR_MOEDA.Length - 2) & [Ô],[Ô] & Right(VALOR_MOEDA, 2)
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR
ElseIf VALOR_MOEDA.Length >= 6 And VALOR_MOEDA.Length < 9 Then
VALOR_TEXTO = [Ô][Ô]
VALOR_TEXTO = Left(VALOR_MOEDA, Len(VALOR_MOEDA) - 5) & [Ô].[Ô]
VALOR_TEXTO = VALOR_TEXTO & Mid(VALOR_MOEDA, Len(VALOR_TEXTO), 3) & [Ô],[Ô]
VALOR_TEXTO = VALOR_TEXTO & Right(VALOR_MOEDA, 2)
TXTTEXTO.Text = VALOR_TEXTO
ElseIf VALOR_MOEDA.Length >= 9 And VALOR_MOEDA.Length <= 11 Then
VALOR_TEXTO = [Ô][Ô]
VALOR_TEXTO = Left(VALOR_MOEDA, Len(VALOR_MOEDA) - 8) & [Ô].[Ô]
VALOR_TEXTO = VALOR_TEXTO & Mid(VALOR_MOEDA, Len(VALOR_TEXTO), 3) & [Ô].[Ô]
VALOR_TEXTO = VALOR_TEXTO & Mid(VALOR_MOEDA, (Len(VALOR_MOEDA) - 4), 3) & [Ô],[Ô]
VALOR_TEXTO = VALOR_TEXTO & Right(VALOR_MOEDA, 2)
TXTTEXTO.Text = VALOR_TEXTO
End If
If KeyAscii = 46 Then
TXTTEXTO.SelectionStart = 0
ElseIf KeyAscii = 37 Or KeyAscii = 39 Or KeyAscii = 35 Or KeyAscii = 36 Then
Else
TXTTEXTO.SelectionStart = Len(TXTTEXTO.Text) + 1
End If
FORMATAR_MOEDA = TXTTEXTO.Text
Else
VALOR_MOEDA = [Ô]0,00[Ô]
VALOR = VALOR_MOEDA
TXTTEXTO.Text = VALOR_MOEDA
TXTTEXTO.SelectionStart = Len(TXTTEXTO.Text) + 1
FORMATAR_MOEDA = TXTTEXTO.Text
End If
End Function
[ô]No Evento KeyUp
With Me
With .TXT_VALOR
.Text = Classe1.FORMATAR_MOEDA(TXT_VALOR, e.KeyValue)
End With
End With
Bom aguardo resposta.
Dê uma olhada nesse exemplo:
ESTILO MOEDA // DIGITACAO DO TEXTBOX
ESTILO MOEDA // DIGITACAO DO TEXTBOX
Bem, não testei, pode até funcionar, mas o comando Format já faz a formatação satisfatoriamente.
Utilizo o FormatNumber(Variavel, numero de casas decimais)
Ex: FormatNumber(textbox1.text, 2)
Você tambem pode utilizar o FormatCurrency
Ex: FormatCurrency(textbox1.Text,2)
Abraços.
Ex: FormatNumber(textbox1.text, 2)
Você tambem pode utilizar o FormatCurrency
Ex: FormatCurrency(textbox1.Text,2)
Abraços.
JONATHANSTECKER,
Eu já tinha dado uma olhada naquele código. O problema dele é que toda vez que eu tiver digitar valores, vou ter que copiar o código todo e ficar adaptando para o controle.
GUIMORAES123,
Parece que as funções acima só funcionam quando o controle perde o foco. O objetivo é formatar em tempo de digitação.
Eu já tinha dado uma olhada naquele código. O problema dele é que toda vez que eu tiver digitar valores, vou ter que copiar o código todo e ficar adaptando para o controle.
GUIMORAES123,
Parece que as funções acima só funcionam quando o controle perde o foco. O objetivo é formatar em tempo de digitação.
Tópico encerrado , respostas não são mais permitidas