2017-09-06 13 views
1

vlookupをvbaで使用する方法を理解しようとしています。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 

私の問題は別のシートへの検索の第2部分だと思います。私はミスマッチ型のエラーを取得し、私は理由を把握することはできません。ルックアップの最初の部分であれば誰かがなぜその理由を説明することができますか?

答えて

0

VBAではVLookupではなくFindOffsetを使用することをお勧めします。 2,0)VLOOKUPに複製する1つの列でオフセットします。このようなもの:

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