Notifications
Clear all

PROCV no VBA

4 Posts
4 Usuários
0 Reactions
727 Visualizações
(@adrtech)
Posts: 0
New Member
Topic starter
 

Olá amigos!

Estou com o seguinte problema. Criei um banco de dados para cadastro de peças, Trata-se de um projeto em grupo para a empresa.

Meu banco de dados tem dois campos de código. 1-Cód. Automático e 2-Cód. do sistema.
Enquanto estou efetuando o cadastro tudo ok! O problema aparece quando eu preciso pesquisar algum registro.
Devo clicar no botão alterar para que minha cx de texto seja habilitada e apos inserir o cod. e pressionar TAB ou ENTER meu formulário deve ser preenchido, mas nao é isso que ocorre e sim os erros: Em anexo...

Será que podem me ajudar

Obrigado

 
Postado : 06/11/2016 5:57 pm
(@mprudencio)
Posts: 0
New Member
 

Pessoalmente prefiro usar um loop para pesquisar

 
Postado : 06/11/2016 6:23 pm
(@djunqueira)
Posts: 0
New Member
 

Vc primeiro iguala COD a TextBox2 depois monta uma pesquisa por COD p/ trazer um valor na coluna 2 q será atribuído de volta a TextBox2.
Vc não vê uma certa redundância nisto?

Se vai buscar o valor na segunda coluna pq não usa o range A:B?

 
Postado : 06/11/2016 11:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Para uso do VLookup é necessário verificar o retorno #N/A

Veja um exemplo..

Private Sub TextBox1_Change()

    On Error Resume Next
    Ms = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Worksheets("Plan3").Range("A2:G5000"), 2, False)
    On Error GoTo 0

    If Ms <> "" Then MsgBox Ms
    
End Sub
Private Sub txtEan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
    On Error Resume Next 'Armadilha de Erros
     
    If Len(txtEan.Text) >= 7 Then
        form1 = WorksheetFunction.VLookup(Val(txtEan.Text), Worksheets("BD_Prod").Range("A1:D100000"), 2, 0)
        form2 = WorksheetFunction.VLookup(Val(txtEan.Text), Worksheets("BD_Prod").Range("A1:D100000"), 3, 0)
        form3 = WorksheetFunction.VLookup(Val(txtEan.Text), Worksheets("BD_Prod").Range("A1:D100000"), 4, 0)
        If Err.Number = 0 Then ' <---
            txtCod.Text = form1
            txtDesc.Text = form2
            txtVlrUnit.Text = form3
            Me.txtEan.BackColor = vbWhite
        Else
            MsgBox "Por favor entre com o EAN correto", vbOKOnly, "EAN não encontrado"
            txtEan.SetFocus
            txtEan.Text = ""
        End If

End Sub

Att

 
Postado : 07/11/2016 5:25 am