Página 1 de 1

Erro em uma condição no vba

Enviado: 22 Out 2015 às 09:30
por wesleybonetti
Bom dia galera
Tenho uma planilha quase pronta em vba, estou com uma dificuldade, quero que quando eu montei esse código
Código: Selecionar todos
Private Sub txtCodigo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Aqui é selecionado a Planilha com seus dados (BASE) no nosso exemplo
    With Plan1.Range("A:A")
 
        'Aqui onde será digitado o que procurar

        Set c = .Find(txtcodigo.Value, LookIn:=xlValues, LOOKAT:=xlWhole)
 
        'Aqui outra tomada de decisão, caso encontre sua pesquisa, será retornado nas caixas de txtbox.
        If Not c Is Nothing Then
            txtrep.Text = c.Offset(0, 4)
            txtNome.Text = c.Offset(0, 3)
 
            'Fim da Pesquisa
        End If
       'Tomada de decisão em caso de não haver nenhum resultado
        If c Is Nothing Then
 
            'Sua mensagem ao usuário aqui
            MsgBox ("Nome Não Encontrado!!!"), vbOKOnly, ("Seu Aplicativo Pesquisando Dados")
        End If
 
        'Fim da Pesquisa
    End With
End Sub
que faz ele puxar na base o nome do cliente e o representante, mais meu critério esta dando erro alguém pode me ajudar,
planilha em anexo

Erro em uma condição no vba

Enviado: 22 Out 2015 às 11:10
por Henrique
Primeiramente eu diria que está faltando definir a variável "c"

Em segundo momento, não encontrei chamada a sua subrotina txtCodigo_Exit dentro dos códigos.

Outra questão é de onde você está referenciando o txtcodigo.Value?

Re: Erro em uma condição no vba

Enviado: 22 Out 2015 às 11:43
por Reinaldo
Fiquei confuso com o modelo apresentado, então vamos no que entendi.
A rotina do post está no formulário frmCadastro, porem o cursor não passa pelo campo que dispararia a rotina (TxtCodigo); o elemento de disparo não deveria ser o campo TxtCodig.
Se for TxtCodig, então "achando" o codigo deveria "fazer" o campo TxtRep igual ao valor da coluna "E" que está em branco; creio que aqui deveria ser na coluna "D", então o desloc deveria ser--> txtrep.Text = c.Offset(0, 3)
O mesmo para o campo txtnome, que deveria ser --> txtNome.Text = c.Offset(0, 1)
Assim sua rotina deveria ser:
Código: Selecionar todos
Private Sub txtCodig_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim c
'Aqui é selecionado a Planilha com seus dados (BASE) no nosso exemplo
    With Plan1.Range("A:A")
 
        'Aqui onde será digitado o que procurar

        Set c = .Find(txtCodig.Value, LookIn:=xlValues, LOOKAT:=xlWhole)
 
        'Aqui outra tomada de decisão, caso encontre sua pesquisa, será retornado nas caixas de txtbox.
        If Not c Is Nothing Then
            txtrep.Text = c.Offset(0, 3)
            txtNome.Text = c.Offset(0, 1)
 
            'Fim da Pesquisa
        End If
       'Tomada de decisão em caso de não haver nenhum resultado
        If c Is Nothing Then
 
            'Sua mensagem ao usuário aqui
            MsgBox ("Nome Não Encontrado!!!"), vbOKOnly, ("Seu Aplicativo Pesquisando Dados")
        End If
 
        'Fim da Pesquisa
    End With
End Sub