我有以下代码,只要Gi
在工作Articles
表中可以找到就可以使用。如果Gi
找不到,则会收到错误消息。我可以使用跳过错误On Error Resume Next
,但我希望能够在此处自动输入一个值。有什么建议吗?我发现文档出错了,但这将停止FOR循环。
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
Range("N" & i).Value = Application.WorksheetFunction.VLookup(Range("G" & i), Sheets("Articles").Range("A2:B5000"), 2, False)
Next i
在这种情况下,您可以将on error goto语句与简历一起使用。在示例代码中,我只是在简历的第一行中捕获了一个错误,所有其他错误均由msgbox处理。
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
On Error Goto ErrorNext
lookupValue = Application.WorksheetFunction.VLookup(Range("G" & i), _
Sheets("Articles").Range("A2:B5000"), 2, False)
On Error Goto ErrorHandler
ResumeHere:
Range("N" & i).Value = lookupValue
Next i
'-------- All of your other code goes here ------------
Exit Sub
ErrorNext:
lookupValue = "Some default value"
Resume ResumeHere
ErrorHandler:
MsgBox "Another Error occured: " & error
如果您不希望使用“默认”错误处理程序,则将其替换On Error goto ErrorHandler
为On Error Goto0。否则,如果在For循环之后出现错误,则将创建一个奇妙的无限循环。
因此,除了这一行外没有错误处理程序,代码如下所示:
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
On Error Goto ErrorNext
lookupValue = Application.WorksheetFunction.VLookup(Range("G" & i), _
Sheets("Articles").Range("A2:B5000"), 2, False)
On Error Goto 0
ResumeHere:
Range("N" & i).Value = lookupValue
Next i
'-------- All of your other code goes here ------------
Exit Sub
ErrorNext:
lookupValue = "Some default value"
Resume ResumeHere
基本上没有错误处理程序的代码总是不好的。我亲自编写的所有代码如下所示:
On Error Goto ErrorHandler
'----------------------------------------
' Here is the real code
'----------------------------------------
EndSub:
Exit Sub
ErrorHandler:
'- Do my error handling here, at least show a "better" message
MsgBox "An error occured: " & Error & " in line " & Erl
Resume EndSub
我的“真实”代码只是介于两行之间……而这个“真实”代码当然可以包含处理“特殊”错误,只需将其恢复到上面示例中的另一个位置即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句