我正在尝试使用 Vlookup 在“数据库”(DB_SHEET)中查找一些税款。当我的数据库中不存在我的名字时,我在 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" 并使用 "On Error" 捕获错误。
其他有效的版本:
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”。