Abimael
|
SÇAO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/11/2007 12:11 hs
Pessoal, resolvi tentar eu mesmo desenvolver o script que eu quero, ficou legal, porem se digitar rápido a pontuação não funciona direito, também quando eu tentei colocar um código para somente digitar números não funcionou, se alguém puder dar uma olhada no código e ver o que pode ser melhorado eu agradeceria.
Dim ContaDinDin As Long Dim Monetario As String Dim GuardaDim As String Private Function Pontuacao()
Select Case ContaDinDin Case 1 Monetario = "0,0" & Text1.Text Text1.Text = Monetario Text1.SelStart = 4 Case 2 Text1.Text = "0," & Mid(Text1.Text, 4, 2) Text1.SelStart = 4 Case 3 Monetario = Right(Text1.Text, 3) 'Pega os tres ultimos numeros Text1.Text = Left(Monetario, 1) & "," & Right(Monetario, 2) 'Pega o primeiro numero +,+os dois ultimos Text1.SelStart = 4 Case 4 Monetario = Left(Text1.Text, 1) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 2) & "," & Right(Monetario, 2) Text1.SelStart = 5 Case 5 Monetario = Left(Text1.Text, 2) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 3) & "," & Right(Monetario, 2) Text1.SelStart = 6 Case 6 Monetario = Left(Text1.Text, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 1) & "." & Mid(Monetario, 2, 3) & "," & Right(Monetario, 2) Text1.SelStart = 8 Case 7 Monetario = Left(Text1.Text, 1) & Mid(Text1.Text, 3, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 2) & "." & Mid(Monetario, 3, 3) & "," & Right(Monetario, 2) Text1.SelStart = 9 Case 8 Monetario = Left(Text1.Text, 2) & Mid(Text1.Text, 4, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 3) & "." & Mid(Monetario, 4, 3) & "," & Right(Monetario, 2) Text1.SelStart = 10 Case 9 Monetario = Left(Text1.Text, 3) & Mid(Text1.Text, 5, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 1) & "." & Mid(Monetario, 2, 3) & "." & Mid(Monetario, 5, 3) & "," & Right(Monetario, 2) Text1.SelStart = 12 ' Text3.Text = Text1.Text Case 10 Monetario = Left(Text1.Text, 1) & Mid(Text1.Text, 3, 3) & Mid(Text1.Text, 7, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 2) & "." & Mid(Monetario, 3, 3) & "." & Mid(Monetario, 6, 3) & "," & Right(Monetario, 2) Text1.SelStart = 13 Case 11 Monetario = Left(Text1.Text, 2) & Mid(Text1.Text, 4, 3) & Mid(Text1.Text, 8, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 3) & "." & Mid(Monetario, 4, 3) & "." & Mid(Monetario, 7, 3) & "," & Right(Monetario, 2) Text1.SelStart = 14 Case 12 Monetario = Left(Text1.Text, 3) & Mid(Text1.Text, 5, 3) & Mid(Text1.Text, 9, 3) & Right(Text1.Text, 3) Text1.Text = Left(Monetario, 1) & "." & Mid(Monetario, 2, 3) & "." & Mid(Monetario, 5, 3) & "." & Mid(Monetario, 8, 3) & "," & Right(Monetario, 2) Text1.SelStart = 16 End Select End Function
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) ContaDinDin = ContaDinDin + 1 Pontuacao End Sub
|
|
|
|
|
Postada em 21/11/2007 14:34 hs
Será que esta dica te ajudaria ao menos para dar um caminho colega??
|
|
|
Abimael
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 21/11/2007 15:00 hs
Já tinha visto este código, o problema é que este código só pontua os centavos, gostaria que também fosse pontuado a milhar e assim por diante.
|
|
|
|
Postada em 21/11/2007 15:07 hs
Vc pode usar também a opção de digitar só números e ao sair do foco formatar: Private Sub text1_lostfocus() text1 = format(ccur(text1),"##0,##0.#0") End Sub Serve?
|
|
|
|
Postada em 21/11/2007 17:18 hs
Aí!! Era só modificar a dica :) Testa deste jeito: If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 Else If Len(TextBox1) > 1 Then TextBox1 = Replace(TextBox1, ",", "") TextBox1 = Left(TextBox1, Len(TextBox1) - 1) & "," & Right(TextBox1, 1) If Len(TextBox1) > 5 Then TextBox1 = Format(TextBox1, "##0,##0.0") Else TextBox1 = Format(TextBox1, "#0.0") End If TextBox1.SelStart = Len(TextBox1) End If End If at+
|
|
|
Abimael
|
SÇAO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 22/11/2007 10:11 hs
Cara Perfeito!!!!!!! Se não sabe quanto tempo eu perdi fazendo este código inútil, valeu mesmo!
|
|
|
|