當您仍處於錯誤處理模式時,不會再有錯誤被捕獲。你失蹤了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