Ir ao conteúdo
  • Cadastre-se

Excel Erro de tempo de execução '91' ao verificar se Textbox está preenchida


Ir à solução Resolvido por Edson Luiz Branco,

Posts recomendados

Olá pessoal, boa noite!

 

Estou com um UserForm para realizar cadastro e antes de cadastrar eu gostaria que fosse verificado:
1) Se as textboxs estão preenchidas
2) Se o fornecedor está cadastrado

 

Eu consigo verificar se as textbox estão preenchidas. Porém, quando acrescentar verificar se o fornecedor está cadastrado aparece o seguinte erro:
Erro de tempo de execução '91': A variável do objeto ou a variável do bloco 'With' não foi definida
 

 A linha com erro indicada é If e = Planilha2.Cells(tblFornecedor3.Row, 4).Value Then

 

Private Sub btn_addfornecedor_Click()
Application.ScreenUpdating = False

With btn_addfornecedor
 
    If box_addfornecedor.Value = vbNullString Or box_addcodigo.Value = vbNullString Then
        .Locked = True
        MsgBox "Campo não preenchido", vbExclamation
        .Locked = False

    Else
        .Locked = False

    Dim e As String
    e = cbox_addfornecedor.Value
    Dim tblFornecedor3 As Range 'achará posição da linha onde o nome esta na tabela principal
    Set tblFornecedor3 = Planilha2.Range("FORNECEDOR").Find(what:=e, lookat:=xlPart)
    If e = Planilha2.Cells(tblFornecedor3.Row, 4).Value Then
    .Locked = True
    MsgBox "Fornecedor já cadastrado", vbExclamation
    
    Else
    
    .Locked = False

...resto do código para salvar as informações

 

Link para o post
Compartilhar em outros sites
  • Solução

@BiaMidori, pra analisar erro fica complicado quando o código é passado incompleto. Mas pelo fragmento que você postou, provavelmente deve ter acontecido de o método Find não ter encontrado o texto procurado. Então ao invés de um Range retorna Nothing, e Nothing não tem propriedade Row.

Nesse caso sempre teste se o objeto não está vazio antes de prosseguir:

 

Set tblFornecedor3 = Planilha2.Range("FORNECEDOR").Find(what:=e, lookat:=xlPart)

If Not tblFornecedor3 Is Nothing Then

   If e = Planilha2.Cells(tblFornecedor3.Row, 4).Value Then

      ...

      ...

   End If

End If

 

Outra hipótese numa passada rápida de olhos sobre seu código é que você pode não ter fechado o primeiro If Then/Else com o End If correspondente ou o With com o End With... Enfim....

  • Curtir 1
  • Obrigado 1
Link para o post
Compartilhar em outros sites

@Edson Luiz Branco Obrigada pela atenção. Em futuros post irei ter a atenção de colocar o código inteiro, realmente a informação acaba ficando incompleta. Segui sua sugestão com uma pequena alteração e deu certo, obrigada! 

 

Set tblFornecedor3 = Planilha2.Range("FORNECEDOR").Find(what:=e, lookat:=xlPart)

If  tblFornecedor3 Is Nothing Then

   .Locked = False
  

      ...

      ...

 Else
     .Locked = True
    MsgBox "Fornecedor já cadastrado", vbExclamation
    .Locked = False
    End If
    End If
    End With

Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!