在错误消息上

时间:2014-06-09 14:52:42

标签: excel vba excel-vba

我正在尝试将错误消息放到下面的代码中(因此如果出现运行时错误,我希望msgbox出现并且代码在用户单击错误消息时停止运行。我在下面给了它一个镜头但有一些问题,代码不能像我喜欢的那样运行。想知道是否有人可以帮助我。

Dim HL As Hyperlink
       For Each HL In ActiveSheet.Hyperlinks
 On Error GoTo ErrorMsgBox
         HL.Range.Offset(0, 1).Value = HL.Address
         HL.Range.Offset(0, 1).Value = FileDateTime(HL.Range.Offset(0, 1).Value)
        Exit Sub
ErrorMsgBox:
           MsgBox ("Error")
           Resume Next
 Next
End Sub  

1 个答案:

答案 0 :(得分:3)

您的错误处理需要在循环外部。此外,由于您希望代码停止运行,因此不应使用Resume Next语句。另外,你的Exit Sub循环中有一个For...Next ,这可能让你感到困惑,但这意味着你的循环"只会运行一次,这几乎肯定不是你想要的。

修:

Dim HL As Hyperlink
   For Each HL In ActiveSheet.Hyperlinks
   On Error GoTo ErrorMsgBox
       HL.Range.Offset(0, 1).Value = HL.Address
       HL.Range.Offset(0, 1).Value = FileDateTime(HL.Range.Offset(0, 1).Value)
   Next

'# Put the exit statement *before* your error handler, and *outside* of the loop
   Exit Sub 

'# Error handler will inform user and end sub.
ErrorMsgBox:
   MsgBox ("Error")
   Err.Clear
End Sub