USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Formarat valores com 3 casas decimais
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.
   
Alexandre Patos
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
ENUNCIADA !
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.
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página