none
COMPARA DADOS DE FORMULÁRIO COM INTERVALO DE PLANILHA RRS feed

  • Discussão Geral

  • Boa Tarde a todos!

    Estou montando um formulário de login, onde tenho uma planilha como banco de dados com os usuários e respectivas senhas, eu gostaria que ao entrar com o usuário na Text Box ele realizasse uma validação comparando o valor com o banco de dados e quando não encontrar exibir a mensagem de usuário incorreto, o único jeito que consegui foi utilizando o comando FOR, que faz a verificação célula por célula, porém ele apresenta uma mensagem para cada célula verificada. Eu gostaria de saber se existe uma forma para ele verificar todos os campos e no final exibir uma mensagem apenas. Segue abaixo o código que escrevi:

    Private Sub Cmd_entrar_Click()
    
    For Linha = 9 To 17
    Set Usuarios = Worksheets("BD").Cells(Linha, 1)
    
        Select Case Me.Txt_usuario
            Case Is = ""
                MsgBox " Digite o nome de Usuário! ", vbExclamation, "Aviso"
            Case Is <> Usuarios
                MsgBox " Usuario Inválido", vbExclamation, "Aviso"
            Case Is = Usuarios
                MsgBox " Usuario Correto", vbExclamation, "Aviso"
        End Select
        
    Next Linha
    
    End Sub

    Desde já agradeço pela atenção!

    Att. Alex Campos

       
    quinta-feira, 24 de agosto de 2017 18:06

Todas as Respostas

  • Option Explicit
    
    Private Sub Cmd_entrar_Click()
    Dim Linha As Integer
    For Linha = 9 To 17
    Dim achou As Boolean
    achou = False
    Dim Usuarios As Worksheet
    Set Usuarios = ThisWorkbook.Worksheets("BD").Cells(Linha, 1)
    
        Select Case Me.Txt_usuario
            Case Is = ""
                MsgBox " Digite o nome de Usuário! ", vbExclamation, "Aviso"
                      Exit For
            Case Is = Usuarios
                MsgBox " Usuario Correto", vbExclamation, "Aviso"
                achou = True
                Exit For
        End Select
        
        If achou = False Then
        MsgBox " Usuario Inválido", vbExclamation, "Aviso"
        
        End If
        
    Next Linha
    
    End Sub
    


    Anderson Diniz

    quinta-feira, 24 de agosto de 2017 18:23
  • Anderson Diniz Muito grato pela resposta!

    Porém ainda estou com o problema que quando ele apresenta "Usuário Inválido" ele apresenta 9 vezes seguida a mensagem ( que é o numero de célula que tem no intervalo ), tem alguma outra forma para aparecer apenas uma mensagem?

    Mais uma Vez agradeço!

    Att. Alex Campos

    quinta-feira, 24 de agosto de 2017 18:44
  • Option Explicit
    
    Private Sub Cmd_entrar_Click()
    Dim Linha As Integer
    For Linha = 9 To 17
    Dim achou As Boolean
    achou = False
    Dim Usuarios As Worksheet
    Set Usuarios = ThisWorkbook.Worksheets("BD").Cells(Linha, 1)
    
        Select Case Me.Txt_usuario
            Case Is = ""
                MsgBox " Digite o nome de Usuário! ", vbExclamation, "Aviso"
                      Exit Sub
            Case Is = Usuarios
                MsgBox " Usuario Correto", vbExclamation, "Aviso"
                achou = True
                Exit For
        End Select
        
        
    Next Linha
    
        If achou = False Then
        MsgBox " Usuario Inválido", vbExclamation, "Aviso"
        
        End If
    End Sub
    


    Anderson Diniz

    quinta-feira, 24 de agosto de 2017 18:50
  • Ele esta apresentando erro de tempo de execução "13": Tipos incompatíveis no comando "Set Usuários ...

    Private Sub Cmd_entrar_Click()
    
    Dim Linha As Integer
    
    For Linha = 9 To 17
    Dim Achou As Boolean
    Achou = False
    Dim Usuarios As Worksheet
    Set Usuarios = ThisWorkbook.Worksheets("BD").Cells(Linha, 1)
    
        Select Case Me.Txt_usuario
            Case Is = ""
                MsgBox " Digite o nome de Usuário! ", vbExclamation, "Aviso"
                Exit For
            Case Is = Usuarios
                Me.Txt_senha.SetFocus
                Achou = True
                Exit For
        End Select
        
    Next Linha
        
    If Achou = False Then
        MsgBox " Usuario Inválido"
    End If
    
    
    End Sub

    quinta-feira, 24 de agosto de 2017 19:42
  • Private Sub Cmd_entrar_Click()
    
    Dim Linha As Integer
    
    For Linha = 9 To 17
    Dim Achou As Boolean
    Achou = False
    Dim Usuarios As Worksheet
    Set Usuarios = ThisWorkbook.Worksheets("BD")
    
        Select Case Me.Txt_usuario
            Case Is = ""
                MsgBox " Digite o nome de Usuário! ", vbExclamation, "Aviso"
                Exit Sub
            Case Is = Usuarios.Cells(Linha, 1)
                Me.Txt_senha.SetFocus
                Achou = True
                Exit For
        End Select
        
    Next Linha
        
    If Achou = False Then
        MsgBox " Usuario Inválido"
    End If
    
    
    End Sub


    Anderson Diniz


    sexta-feira, 25 de agosto de 2017 03:16
  • Muito Obrigado Anderson Diniz!

    Deu completamente certo, Valeu pela força!

    Abraços.

    Att. Alex Campos

    sexta-feira, 25 de agosto de 2017 11:02