MASCARA DINHEIRO

MARCELOFAZAN 01/07/2010 14:18:37
#346279
Private Sub txtvalor_Change()
If Txtvalor.Tag = [Ô][Ô] Then
Txtvalor.Tag = [Ô]1[Ô]
Wvalor = Replace(Txtvalor.Text, [Ô].[Ô], [Ô][Ô])
Wvalor = Replace(Wvalor, [Ô],[Ô], [Ô][Ô])
Txtvalor.Text = Format(Wvalor, [Ô]###,###,###,###.##[Ô])
Txtvalor.SelStart = Len(Txtvalor.Text)
Txtvalor.Tag = [Ô][Ô]
End If
End Sub

Pessoal tentei adaptar esse codigo de mascara , mais qdo .... vo digitar o ponto ou a virgula nenhum me consegue colocar 45,00 .......... o resultado esta ficando assim 4.500

o que há de incorreto

Abs
Marcelo Fazan
JANDER 01/07/2010 14:28:38
#346283
Resposta escolhida

depois colocar no lotfocus do text isso

modulo qualquer
Function Real(Valor) As String

If Valor = [Ô]0,00[Ô] Or IsNull(Valor) Then
Real = [Ô]0,00[Ô]
Else
Real = Format(Replace(Valor, [Ô].[Ô], [Ô],[Ô]), [Ô]###,##0.00[Ô])
End If


End Function
MARCELOFAZAN 01/07/2010 14:36:58
#346285
Obrigado Jander

No caso vo usar a função
e nao usar o codigo que postei acima


tentei colocar no lostfocus assim

Private Sub Txtvalor_LostFocus()
[ô]
Real Txtvalor, KeyPress
[ô]
End Sub

mais deu erro
MARCELOFAZAN 01/07/2010 14:47:17
#346287
Leo Obrigado ,

testei aqui


Private Sub Txtvalor_GotFocus()
Selecionar Txtvalor
End Sub

Private Sub Txtvalor_KeyPress(KeyAscii As Integer)
CampoMoeda Txtvalor, KeyAscii
End Sub


Me da o seguinte erro compile error
wrong number of arguments or invalid property aassginment

apontando o erro pra esta linha Private Sub Txtvalor_KeyPress(KeyAscii As Integer)

Abs
Marcelo Fazan
JANDER 01/07/2010 16:23:55
#346310
MARCELOFAZAN

coloca assim

Txtvalor.text = Real(Txtvalor.text)
MARCELOFAZAN 01/07/2010 16:55:38
#346318
Jander Obrigado novamente
agora a sintax está correta

porem nao fico um padrao universal
pro exemplo do 45,00 funciono corretamente

mais se eu colocar outros valores maiores que 2 duas já desacompanham tudo
1,00 da certo
10,00 da certo
100,0 come um zero
1,000 tira os zero
10,000 vira 10,00

não tem uma forma mais universal de conter isso, tirando que precisarei depois utliizar tb no mostra dados ou ao decorrer do uso do fomulario como setas etc .....

vi que tinha uma propriedade mask
mais nao achei na caixa de propriedades
seria via codigo mesmo text.mask ? nao seria mais facil para utilizar ? ou mesmo deixar essa funcao mais universal com até 999.999.999,99

Abs
Marcelo Fazan




nao teria como ficar uma padronizacao na funcao maior pra 1.000.000,00 dentro desse
MARCELOFAZAN 02/07/2010 14:13:11
#346394
Olá Barros
tentei colocar aqui

Private Sub Txtvalor_LostFocus()
Txtvalor.Text = Format(Txtvalor, [Ô]currency[Ô])
End Sub


mais se eu digito 1000,00 ele me escreve R$ 1.

ainda nao é o que preciso

Obrigado
Abs
Marcelo Fazan
MARCELOFAZAN 02/07/2010 15:03:59
#346399
Pessoal agora que vi o MaxLength estava como 5
nunca iria dar certo

obrigado as dicas
acabei achando um exemplo tambem legal no forum
funciono bonitinho


Private Sub txtvalor_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
On Error Resume Next
Txtvalor = FormatNumber(Txtvalor, 2)
If Txtvalor = [Ô][Ô] Then
Txtvalor = [Ô]0,00[Ô]
CmdGravar.SetFocus
Exit Sub
Else
CmdGravar.SetFocus
End If
End If
End Sub

Private Sub txtvalor_KeyPress(KeyAscii As Integer)
sQtdeVirgulas = Split(Txtvalor, [Ô],[Ô])
If UBound(sQtdeVirgulas) > 0 Then
If KeyAscii = 44 Or KeyAscii = 46 Then
MsgBox [Ô]ERRO DE DIGITAÇÃO[Ô], vbCritical, [Ô]ERRO[Ô]
KeyAscii = 0
End If
End If
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 46 And KeyAscii <> 44 And KeyAscii <> 13 And KeyAscii <> 8 Then KeyAscii = 0
End Sub

Private Sub txtvalor_LostFocus()
If Txtvalor = [Ô][Ô] Or Left(Txtvalor, 1) = [Ô].[Ô] Or Left(Txtvalor, 1) = [Ô],[Ô] Then
Txtvalor = [Ô]0,00[Ô]
Else
Txtvalor = FormatNumber(Txtvalor, 2)
End If
End Sub


Obrigado
Abraços
Marcelo Fazan
Tópico encerrado , respostas não são mais permitidas