Xando
|
MATAO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 13/10/2008 09:17 hs
Olá, amigos, tenho uma função que formata um valor monetário numa TextBox, com duas casas decimais. Porém, queria adaptá-la para utilizar, também quando quiser inserir um valor com três casas decimais. Nesta função, ao digitar um valor na TextBox, digita-se apenas os números e a vírgula e o ponto de separação de milhar são inseridos automaticamente. Aqui está a função: ' função para formatar os campos de valores monetários - (2 casas decimais) Function CampoValor(obj As Object, KeyAscii As Integer, tamanho As Integer) If Not ((KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) Or KeyAscii = 8) Then KeyAscii = 0 Exit Function End If If KeyAscii = 8 Then ' se campo for vazio, não faz nada If obj.Text = "" Then Exit Function End If ' deleta o número à esquerda do cursor obj.Text = Left(obj.Text, Len(obj.Text) - 1) obj.SelStart = Len(obj.Text) End If If Len(obj.Text) = tamanho Then KeyAscii = 0 Exit Function End If If Len(obj.Text) = obj.SelLength Then If KeyAscii = vbKeyReturn Or KeyAscii = vbKeyEscape Then Exit Function Else obj.Text = "" Exit Function End If End If If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 Else If Len(obj.Text) > 1 Then obj.Text = Replace(obj.Text, ",", "") obj.Text = Left(obj.Text, Len(obj.Text) - 1) & "," & Right(obj.Text, 1) obj.Text = Format(obj.Text, "#,##0.0") obj.SelStart = Len(obj.Text) End If End If End Sub Para testar, basta colocar no Form uma TextBox e no evento KeyPress digite: CampoValor text1, keyascii, 10 onde text1 é o nome da TextBox. Agradeço se puderem me ajudar. Até mais.
|
|
|
|
|
Postada em 13/10/2008 10:58 hs
obj.Text = Format(obj.Text, "#,##0.000")
|
|
|
Xando
|
MATAO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 13/10/2008 12:17 hs
Obrigado, Alexandre, mas dessa maneira, não consigo o resultado que eu queria. Se puder, faça como eu disse: Crie um form e nele uma Textbox e digite o comando no evento Keypress dele. Escreva e função e depois digite um valor na Textbox e veja o resultado que eu desejo. Só que eu preciso formatar com 3 casas decimais e não 2 casas. Valeu. Se alguém mais puder ajudar ou se souber de outra maneira de fazer isso eu agradeço. Até mais.
|
|
|
Macaubal
|
MACAUBAL SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 13/10/2008 12:45 hs
Format(Variavel, "0,###")
|
|
|
Xando
|
MATAO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 13/10/2008 16:11 hs
Olha, galera, abraços a todos, obrigado pela ajuda e a quem interessar, eu achei uma solução para meu caso: If Len(obj.Text) > 1 Then obj.Text = Replace(obj.Text, ",", "") obj.Text = Left(obj.Text, Len(obj.Text) - 2) & "," & Right(obj.Text, 2) obj.Text = Format(obj.Text, "#,##0.0") obj.SelStart = Len(obj.Text) End If Basta alterar a linha em negrito. Até mais.
|
|
|
|