当您仍处于错误处理模式时,不会再有错误被捕获。你失踪了Resume
声明退出错误处理方式:
Private Sub CommandButton1_Click()
For i = 2 To 5
On Error GoTo X1:
Range("F" & i) = Application.WorksheetFunction.VLookup(Range("E" & i), Range("A2:B5"), 2, 0)
GoTo X2:
X1:
Range("F" & i) = "No Value found"
Resume X2 'Finished error-handling, resume normal processing
X2:
Next
End Sub
一种更好的方式做你正在做的事情是:
Private Sub CommandButton1_Click()
Dim i As Long
Dim result As Variant
For i = 2 To 5
result = Application.VLookup(Range("E" & i), Range("A2:B5"), 2, 0)
If IsError(result) Then
result = "No Value found"
End If
Range("F" & i) = result
Next
End Sub
使用Application.VLookup
,而不是Application.WorksheetFunction.VLookup
,允许将VLookup
生成的错误条件返回到您的代码中,而不是在VBA本身中导致错误,并且一旦回到代码中,您可以以受控方式测试错误。
我从来没有见过“运行时错误1004。回答尚未找到”的消息之前 - 你确定这就是它说的吗?!?! – YowE3K