Notifications
Clear all

Procedimento ao apertar Enter (KeyDown) - ERRO

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

Boa tarde, estou com o seguinte código que é executado quando o usuário aperta enter no preenchimento de um TextBox.

Porém, o código sempre pula pro final e exibe a MsgBox "Cadastro não encontrado!".~

Estou à décadas tentando descobrir o porquê, mas não consigo.

Se alguém puder me ajudar ficaria grato!

Obrigado.

Private Sub TextBox_CodSimade_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
    
        Dim Cod As Variant
        Cod = UserForm_Expulsar.TextBox_CodSimade
        'Cod = WorksheetFunction.Trim(Cod)
      
    'Verificar se o campo está preenchido corretamente
        If Cod = "" Then
            MsgBox "Campo 'Cód. SIMADE' obrigatório!"
            UserForm_Expulsar.TextBox_CodSimade.SetFocus
            Exit Sub
        ElseIf WorksheetFunction.CountIf(Sheets("Alunos").Range("D4:D3150"), Cod) = 0 Then
            MsgBox "Nenhum aluno cadastrado com esse código. Entre com um código válido!"
            UserForm_Expulsar.TextBox_CodSimade = ""
            UserForm_Expulsar.TextBox_CodSimade.SetFocus
            Exit Sub
        End If
        
        
    'Inserir os dados do aluno nos rótulos
        Sheets("Alunos").Activate
        Range("D4").Select
        Dim count As Integer, msg As String, cel As Variant
        For count = 1 To 3150
            cel = Selection.Value
            If cel = Cod Then
                UserForm_Expulsar.Label_CodSimade = Cod
                UserForm_Expulsar.Label_Nome = Selection.Offset(0, 1)
                UserForm_Expulsar.Label_Turma = Selection.Offset(0, 6)
                'Verificar se o aluno já está expulso
                If WorksheetFunction.CountIf(Sheets("Turmas").Range("F2:F62"), Cod) > 0 Then
                    Sheets("Turmas").Activate
                    Range("F2").Select
                    Dim i As Integer
                    For i = 1 To 60
                        If Cod = Selection Then
                            msg = "Expulso até dia " & Selection.Offset(0, 1).Value
                            UserForm_Expulsar.Label_Situ = msg
                            Exit Sub
                        End If
                        Selection.Offset(1, 0).Select
                    Next i
                Else   'Não está expulso
                    UserForm_Expulsar.Label_Situ = "Não está expulso!"
                    UserForm_Expulsar.TextBox_Dias.Enabled = True
                    UserForm_Expulsar.TextBox_Dias.SetFocus
                    UserForm_Expulsar.Cmd_Expulsar.Enabled = True
                    Exit Sub
                End If
            Selection.Offset(1, 0).Select
            End If
        Next count
        MsgBox "Cadastro não encontrado!"
    End If

End Sub
 
Postado : 06/08/2015 2:08 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A demanda não está de acordo com o modelo de rotina, pois pela sua descrição "quando o usuário aperta enter no..." não bate com o evento do codigo --> KeyDown

Pela rotina não há, aparentemente erro; porem a mesma é disparada a cada tecla acionada (não o enter da descrição); assim ao digitar, por exemplo "A" a rotina e disparada, não deve encontrar o registro e gera a msg.
Altere para o local/evento desejado (exito ou after update do txt) e veja se funciona

 
Postado : 07/08/2015 6:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Só acrescentando, apos as alterações citadas, você poderá correr a macro passo a passo e verificar onde se encontra o possivel erro, já que pelo que diz não é erro e sim a questão do evento e resultado.
Para seguir Passo a Passo, posicione o cursor em cima de "Private Sub TextBox_CodSimade...." e pressione a Tecla "F9", a linha ficará Marrom, e depois execute seu modelo normalmente e será direcionada para esta linha marcada, então vá pressionando "F8" e acompanhara a execução da mesma, em muitos casos ajuda muito.

 
Postado : 07/08/2015 6:51 am
(@viniciusns)
Posts: 0
New Member
Topic starter
 

Reinaldo e Mauro obrigado pela disposição de vocês.

Mas o problema estava na posição de uma linha de código. Estava dando o comando "End If" no lugar errado.

Mesmo assim obrigado pela atenção!

 
Postado : 07/08/2015 7:53 am