我試圖使用Vlookup在「數據庫」(DB_SHEET)中查找一些稅。當我的名字不存在於我的數據庫中時,我在VlookUp中收到錯誤'1004'。Catch Vlookup 1004錯誤
爲什麼'On Error GoTo Err1'沒有發現錯誤?
我的代碼:
Dim tax1 as Double, tax2 as Double, name as String
On Error GoTo Err1
While Cells(rowIndex, 1) <> ""
name = Cells(rowIndex, 4)
fin = Cells(rowIndex, 5) * Cells(rowIndex, 6)
tax1 = WorksheetFunction.VLookup(name, Sheets(DB_SHEET).Range("D:G"), 3, False)
tax2 = WorksheetFunction.VLookup(name, Sheets(DB_SHEET).Range("K:P"), 2, False)
Cells(rowIndex, 8) = (fin * tax1) - (fin * tax2)
Err1:
rowIndex = rowIndex + 1
Wend
On Error Goto 0
我已經知道工作的代碼,但我想知道爲什麼我不能這樣做「WorksheetFunction」和catch錯誤使用「上的錯誤」。
的作品其他版本:
Dim tax1 as Variant, tax2 as Variant, name as String
While Cells(rowIndex, 1) <> ""
name = Cells(rowIndex, 4)
fin = Cells(rowIndex, 5) * Cells(rowIndex, 6)
tax1 = WorksheetFunction.VLookup(name, Sheets(DB_SHEET).Range("D:G"), 3, False)
tax2 = WorksheetFunction.VLookup(name, Sheets(DB_SHEET).Range("K:P"), 2, False)
If Not IsError(tax1) And not IsError(tax2) Then
Cells(rowIndex, 8) = (fin * tax1) - (fin * tax2)
End if
rowIndex = rowIndex + 1
Wend
編輯(後:K_B答案)
1)WorksheetFunction.Vlookup的如果我使用Application.Vlookup(...)歐洲工商管理學院(.. )我得到了「錯誤13」。
我不認爲你可以在這樣的循環中使用錯誤處理程序。嘗試在循環之外移動它,然後在增加行號之後添加Resume Next。 –
是的,我可以。而且我不想使用「繼續下一步」,在此代碼中,我更願意使用「On erro goto Label:」 – Makah
繼續下一步會出現在您的錯誤標籤之後。我並不是建議你使用「On Error Resume Next」 –