Notifications
Clear all

Run-time error '424': Object required

7 Posts
2 Usuários
0 Reactions
1,880 Visualizações
(@gabrba)
Posts: 0
New Member
Topic starter
 

Olá!

Estou enfrentando problemas com o VBA, pois no momento que insiro as informações no formulário, ocorre o erro descrito.
O código abaixo trata-se de um código para realizar login numa pasta de trabalho. Quando aperto F8, o erro é direcionado para essa linha:

While (USUARIO.Cells(lin, col) <> txtLogin)

Private Sub cmdEntrar_Click()
        
        If txtLogin = "" Then
            MsgBox "Digite o nome do usuário!"
            Exit Sub
            txtLogin.SetFocus
        Else
          If txtSenha = "" Then
                MsgBox "Digite a senha do usuário!"
                Exit Sub
                txtSenha.SetFocus
          End If
        End If
        
        col = 1
        lin = 2
        While (USUARIO.Cells(lin, col) <> txtLogin)
            lin = lin + 1
            If lin > 50 Then
                MsgBox "Usuário não está cadastrado"
                Exit Sub
            End If
        Wend
        
        Dim senha As String
        'lin = 2
        col = 2
        senha = USUARIO.Cells(lin, col).Value
        
        If txtSenha <> senha Then
            MsgBox "A senha não confere!"
            Exit Sub
        Else
            MsgBox "Seja bem vindo " & txtLogin
            lin = 2
            col = 1
            While (ACESSOS.Cells(lin, col) <> "")
                lin = lin + 1
            Wend
            ACESSOS.Cells(lin, 1) = txtLogin.Value
            ACESSOS.Cells(lin, 2) = txtSenha.Value
            ACESSOS.Cells(lin, 3) = Date

            Sheets("ROSTO").Select
        
        End If
        
End Sub

Agradecido desde já!

Gabriel

 
Postado : 05/04/2018 10:53 am
(@edsonbr)
Posts: 0
New Member
 

Boa tarde, Gabriel

Imagino que o único motivo para esse erro é que o CodeName da planilha tenha sido grafado errado. Ao invés de USUARIO, talvez vc tenha usado acento no A ou colocado no plural (USUÁRIO/USUARIOS) ao mudar o nome da classe.

Ou talvez USUARIO seja o nome da Planilha e não o nome-código. Nesse caso, ao invés de USUARIO.Cells(lin, col) tem que usar algo como Worksheets("USUARIO").Cells(lin, col).

 
Postado : 05/04/2018 12:02 pm
(@gabrba)
Posts: 0
New Member
Topic starter
 

Acrescentei o Worksheets e deu certo! Apenas um mero detalhe.

Muito obrigado Edson!

Mas aproveitando o tópico gostaria de tirar mais uma dúvida.
Estarei mexendo nesta planilha onde tem o login e também irei manipular outras pastas de trabalho no excel. Quando acesso outra planilha e volto nessa do login, pede novamente o acesso. Há alguma maneira de impedir isso? Ou seja, de somente pedir o login quando você realmente abre a pasta de trabalho?

Gabriel

 
Postado : 06/04/2018 5:50 am
(@gabrba)
Posts: 0
New Member
Topic starter
 

No aguardo

 
Postado : 09/04/2018 1:15 pm
(@edsonbr)
Posts: 0
New Member
 

Quando acesso outra planilha e volto nessa do login, pede novamente o acesso. Há alguma maneira de impedir isso? Ou seja, de somente pedir o login quando você realmente abre a pasta de trabalho?

Dá pra usar o evento Workbook_Open pra carregar o form solicitando a senha. Agora, se ao alternar entre Workbooks diferentes volta a pedir senha pode indicar que há alguma armadilha de evento tipo Workbook_Activate ou Worksheet_Activate.

Por isso é sempre interessante postar seu modelo, nem que seja só o esqueleto pra não ficarmos divagando em hipóteses...

 
Postado : 09/04/2018 2:37 pm
(@gabrba)
Posts: 0
New Member
Topic starter
 

Opa, segue em anexo.

Coloquei no local "ThisWorkbook".

Clique em x para edição da pasta.

Obrigado!

Gabriel

 
Postado : 10/04/2018 6:30 am
(@edsonbr)
Posts: 0
New Member
 

Então, como dito anterirormente, o código que chamava o UserForm estava numa Sub Workbook_Activate() no módulo da Pasta (ThisWorkbook). Bastava renomeá-lo para Workbook_Open() para ter o comportamento conforme desejado.

Private Sub Workbook_Open()
  Sheets("LOGIN").Select
  fmdLogin.Show
End Sub
 
Postado : 10/04/2018 9:40 am