Perk
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 08/03/2007 00:13 hs
Achei a seguinte solução para colocar no MaxFocus. Veja se vocês concordam ou se é possível melhorar esta minha lógica: If txtConta.Text = Empty Then txtConta.Text = "0,00" txtConta.Text = Format(txtConta.Text, "#,##0.00") 'verifica se foi digitado vírgula mais de uma vez a = InStr(Right(txtConta.Text, 2), ",") If a <> 0 Then MsgBox "Erro": txtConta.SetFocus: Exit Sub b = InStr(Left(txtConta.Text, (Len(txtConta.Text) - 3)), ",") If b <> 0 Then MsgBox "Erro": txtConta.SetFocus: Exit Sub
|
|
|
|
|
Postada em 08/03/2007 00:15 hs
Onde eu escrevi MaxFocus acima, leia-se MaxFocus
|
|
|
|
Postada em 08/03/2007 00:37 hs
Bom, o q vou colocar aqui é semelhante ao modo em que vc digita valores em caixas automáticos de bancos (ao menos do itaú é assim) em que vc apenas digita os número e automaticamente vai formatando. Cole o código no evento keypress da textbox: If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 Else If Len(Text1) > 1 Then Text1 = Replace(Text1, ",", "") Text1 = Left(Text1, Len(Text1) - 1) & "," & Right(Text1, 1) Text1 = Format(Text1, "#0.0") Text1.SelStart = Len(Text1) End If End If Pronto, o usuário apenas digitará números e vc não precisa se preocupar com vírgulas. Lógico que precisará de um ajuste aqui e outro ali mas é só testar que o básico está aí. qq dúvida por favor poste at+
|
|
|
|
Postada em 09/03/2007 17:49 hs
Ghost_jlp, como sempre sua dica foi muito boa. Que tal acrescentá-la aqui no site ? Abraços
|
|
|
|
Postada em 09/03/2007 18:52 hs
No format, divida por 100. Assim (pegando o exemplo do Vilmar):
txtConta.Text = Format$(Val(txtConta.Text/100), "#,##0.00")
Eu instruo num label com essa frase:
"Não digite ponto ou vírgula. Digite 00 no final de valores inteiros" ou use algo parecido, depende da sua criatividade.
A maneira que vc quer até que é possivel, mas vai exigir muita tentativa-e-erro, usando a propriedade Change do textbox. Meio complicado, nunca fiz, mas sei que é possível.
|
|
|
|