2017-09-06 52 views
1

我想弄清楚如何在vba中使用vlookups。在VBA中使用VLookup類型不匹配錯誤

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 

我認爲我的問題是查找另一張表的第二部分。我得到一個不匹配類型的錯誤,我找不出原因。如果這是查找的第一部分,有人可以解釋爲什麼?

回答

0

在VBA中使用FindOffset而不是VLookup更好。偏移一列以複製2,0),VLOOKUP。類似這樣的:

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

是的,這太好了!非常感謝,我的代碼更適合,它看起來更整潔。 – SteveG

+0

@SteveG,沒問題。樂於幫助 – CallumDA