none
Type mismatch in VLookup RRS feed

  • Pergunta

  • Olá,
    estou a criar um form em VBA que introduzindo um numero de telefone deve validar (utilizando o VLOOKUP) uma sheet e devolver o nome da pessoa.


    A sheet tem 2 colunas a primeira com o contacto e a segunda com o nome
    Contact Name
    123456789 RMSoares
    987654321 ALFA


    Para efectuar o Lookup estou a utilizar a seguinte instrucção
    NameTextBox.Value = Application.VLookup(ContactTextBox.Value, Range("$A$2:$B$100"), 2)


    Testei com valores alfanumericos e funcionou mas quando utilizo valores numericos (que é o expectavel), ocorre o seguinte erro :

    Run-time error '-2137352571 (80020005)': Could not set the Value property. Type mismatch


    Alguma sugestão de como corrigir o problema de forma a que seja possivel utilizar valores numericos ?


    quinta-feira, 18 de outubro de 2012 00:42

Respostas

  •  Olá RMSoares

    Já tentou usar o comando Find?

    With Worksheets("NomeDaSuaPlanilha").Range("A:A")
    Set c = .Find(NameTextBox.Value)
         If Not c Is Nothing Then
         c.Select
         ContactTextBox.Value = ActiveCell.Offset (0, 1).Value
    Else
         MsgBox "Nenhum registro encontrado!", vbOkOnly, "Erro!"
         End If
    End With

    Abraço.....

    quinta-feira, 18 de outubro de 2012 16:25
  • @RMSoares,
    Em primeiro lugar, corrija o código. Está faltando o último parâmetro. O correto seria:

    NameTextBox = Application.VLookup(CStr(ContactTextBox), Range("$A$2:$B$100"), 2, 0)

    Você está obtendo esse erro porque quando o método Vlookup não encontra uma correspondência, é retornado um erro. Sugiro você fazer algo do tipo:

        Dim sCorrespondência As String
        
        '...(código)...
        
        On Error Resume Next
        sCorrespondência = Application.VLookup(CStr(ContactTextBox), Range("$A$2:$B$100"), 2, 0)
        On Error GoTo 0
        If sCorrespondência <> "" Then
            NameTextBox = sCorrespondência
        Else
            MsgBox "O número de telefone não está associado a nenhum contato!"
        End If


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 19 de outubro de 2012 00:18
    Moderador

Todas as Respostas

  •  Olá RMSoares

    Já tentou usar o comando Find?

    With Worksheets("NomeDaSuaPlanilha").Range("A:A")
    Set c = .Find(NameTextBox.Value)
         If Not c Is Nothing Then
         c.Select
         ContactTextBox.Value = ActiveCell.Offset (0, 1).Value
    Else
         MsgBox "Nenhum registro encontrado!", vbOkOnly, "Erro!"
         End If
    End With

    Abraço.....

    quinta-feira, 18 de outubro de 2012 16:25
  • @RMSoares,
    Em primeiro lugar, corrija o código. Está faltando o último parâmetro. O correto seria:

    NameTextBox = Application.VLookup(CStr(ContactTextBox), Range("$A$2:$B$100"), 2, 0)

    Você está obtendo esse erro porque quando o método Vlookup não encontra uma correspondência, é retornado um erro. Sugiro você fazer algo do tipo:

        Dim sCorrespondência As String
        
        '...(código)...
        
        On Error Resume Next
        sCorrespondência = Application.VLookup(CStr(ContactTextBox), Range("$A$2:$B$100"), 2, 0)
        On Error GoTo 0
        If sCorrespondência <> "" Then
            NameTextBox = sCorrespondência
        Else
            MsgBox "O número de telefone não está associado a nenhum contato!"
        End If


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 19 de outubro de 2012 00:18
    Moderador