我已經在這裏編寫了一些代碼,由極其有用的用戶Jeeped幫助。唯一的問題是,我收到錯誤Invalid Procedure Call or Argument
當查找不找到結果。如果發現結果,它似乎很好。Excel VBA無效的過程調用或vlookup找不到結果時的參數
我希望它只是返回#N /好像它找不到結果。你能幫我解決這個問題嗎?另外我還有500列可以做到這一點,所以如果有更簡單的方法來解決這個問題,那就太棒了。我仍然在學習VBA。非常感謝。如果VRange
對象是什麼
Dim v As Long, vWSs As Variant, Mrange As Range, Vrange As Range
Dim wsMaster As Worksheet: Set wsMaster = Workbooks("LBImportMacroTemplate.xlsm").Worksheets("MasterTab")
Dim mf_iA_TEXT As String: mf_iA_TEXT = "iA"
Dim mf_pLN_TEXT As String: mf_pLN_TEXT = "pLN"
'ET CETERA
vWSs = Array("B", "E", "L", "I", "T")
With Workbooks("LBImportMacroTemplate.xlsm")
Set Mrange = Nothing: Set Vrange = Nothing
'
With ActiveSheet
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
MsgBox lastrow
End With
'
For v = LBound(vWSs) To UBound(vWSs)
If CBool(Application.CountIf(.Sheets(vWSs(v)).Range("A2:ZA2"), mf_iA_TEXT)) Then
Set Mrange = .Sheets(vWSs(v)).Range("A2:ZA2")
Set Vrange = .Sheets(vWSs(v)).Range("A:ZA")
mf_iA = Application.Match(mf_iA_TEXT, Mrange, 0)
Exit For
End If
Next v
For i = 2 To lastrow
wsMaster.Cells(i, 2) = Application.VLookup(wsMaster.Cells(i, 1), Vrange, mf_iA, 0)
Next i
Set Mrange = Nothing
Set Vrange = Nothing
'
For v = LBound(vWSs) To UBound(vWSs)
If CBool(Application.CountIf(.Sheets(vWSs(v)).Range("A2:ZA2"), mf_pLN_TEXT)) Then
Set Mrange = .Sheets(vWSs(v)).Range("A2:ZA2")
Set Vrange = .Sheets(vWSs(v)).Range("A:ZA")
mf_pLN = Application.Match(mf_pLN_TEXT, Mrange, 0)
Exit For
End If
Next v
For i = 2 To lastrow
wsMaster.Cells(i, 3) = Application.VLookup(wsMaster.Cells(i, 1), Vrange, mf_pLN, 0)
Next i
Set Mrange = Nothing
Set Vrange = Nothing
的'Application.Vlookup'返回一個錯誤值的錯誤'2042'當結果無法找到,並且應當在目標打印該單元格爲'#N/A'。你描述的錯誤必須是由於除了沒有找到vlookup以外的東西。 – 2015-02-09 19:45:22
如果'Vrange是Nothing',這個錯誤肯定會發生。 – 2015-02-09 19:53:00
您能指出哪兩個VLOOKUP語句導致失敗? – 2015-02-09 19:56:15