我试图使用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” –