2017-09-06 1 views
1

Ich versuche herauszufinden, wie vlookups in VBA verwenden.Verwendung von VLookup in VBA Typ Mismatch Fehler

Function Check_NPI_NUM(pracno As String, npi As String) As String 
    Dim tempRange As Range 
    Set tempRange = ThisWorkbook.Worksheets("tempSheet").Columns("C:D") 

    Dim fixedPracno As Variant 
    'fixed pracno will look like this "$C$64941" 
    fixedPracno = Replace(pracno, "H", "C") 

    If (npi = "0") Then 
    Check_NPI_NUM = Application.IfError(Application.VLookup(fixedPracno, tempRange, 2, False), "0") 
    Else 
    Check_NPI_NUM = npi 
    End If 
End Function 

Ich denke, mein Problem ist der zweite Teil der Suche nach einem anderen Blatt. Ich bekomme einen Fehlertypfehler und ich kann nicht herausfinden warum. Wenn es der erste Teil der Suche ist, kann jemand erklären warum?

Antwort

0

Es ist eine viel bessere Idee, Find und Offset anstelle von VLookup in VBA zu verwenden. Offset um eine Spalte, um 2,0) in VLOOKUP zu replizieren. Etwas wie dieses:

Sub Test() 
    Dim tableArray As Range, found As Range 

    Set tableArray = ThisWorkbook.Worksheets("Sheet1").Range("A1:A1000") 

    Set found = tableArray.Find(what:="someValue", lookat:=xlWhole) 

    If Not found Is Nothing Then 
     MsgBox found.Offset(0, 1).Value 
    Else 
     MsgBox "Not found" 
    End If 
End Sub 
+0

Ja das ist großartig! Vielen Dank, passt viel besser in meinen Code und es sieht besser aus. – SteveG

+0

@SteveG, kein Problem. Freue mich zu helfen – CallumDA