Notifications
Clear all

ERRO AO APAGAR

4 Posts
2 Usuários
0 Reactions
876 Visualizações
(@eltonpi)
Posts: 0
New Member
Topic starter
 

Amigos, estou utilizando um código que aprendi aqui, mas identifiquei um erro ao apagar os dados.

Vejam no exemplo que anexei:

Digitem qualquer valor e tentem simplesmente apagar os dados usando o backspace. Ele vai para depuração, mas sinceramente, não entendi o erro.

Mui grato!

 
Postado : 18/06/2015 6:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Seu exemplo está em Branco, salvo como .xlsx não salva as macros/rotinas.
No campo onde apresenta o erro, é feita alguma validação??

 
Postado : 18/06/2015 6:32 am
(@eltonpi)
Posts: 0
New Member
Topic starter
 

Obrigado por avisar. Segue novamente, agora corrigido.

 
Postado : 18/06/2015 6:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Substitua pela rotina abaixo e veja se é isto, pelo que vi o erro só se dá quando textbox está vázio, ou segurando precionado o BackSpace ou selecionando e Deletando todo o valor.

Private Sub Valor_Entrada_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 8 Or KeyCode = 46 Then
        Valor_Entrada.Text = Replace(Valor_Entrada.Text, ",", "")
        Valor_Entrada.Text = Replace(Valor_Entrada.Text, ".", "")
        
        If Len(Valor_Entrada.Text) > 3 Then
            Valor_Entrada.Text = Mid(Valor_Entrada.Text, 1, Len(Valor_Entrada.Text) - 2) & "," & Mid(Valor_Entrada.Text, Len(Valor_Entrada.Text) - 1, 2)
        Else
        
            If Len(Valor_Entrada.Text) = 3 Then
                Valor_Entrada.Text = Mid(Valor_Entrada, 1, 1) & "," & Mid(Valor_Entrada.Text, 2, 2)
            Else
            
                If Len(Valor_Entrada.Text) = 2 Then
                    Valor_Entrada.Text = "0," & Mid(Valor_Entrada.Text, 1, 2)
                Else
                    If Len(Valor_Entrada.Text) = 0 Then
                        Valor_Entrada.Text = "0,00" & Mid(Valor_Entrada.Text, 1, 2)
                        Exit Sub
                    End If
                End If
            End If
            
        End If
        
        a = InStr(1, Valor_Entrada.Text, ",", vbTextCompare)
        b = Mid(Valor_Entrada.Text, 1, a - 1)
        
        For x = 1 To Len(b)
            cont = cont + 1
            c = Mid(b, Len(b) - x + 1, 1) & c
            If cont = 3 Then
                If Len(b) > 3 Then
                    c = "." & c
                    cont = 0
                End If
            End If
        Next x
        
        If Mid(c, 1, 1) = "." Then
            c = Mid(c, 2, Len(c))
        End If
        
        Valor_Entrada.Text = c & Mid(Valor_Entrada.Text, Len(Valor_Entrada.Text) - 2, 3)
End If
End Sub

Faça os testes.

[]s

 
Postado : 18/06/2015 7:51 am