2017-09-06 46 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