【问题标题】:On Error Goto 0 not resetting error trappingOn Error Goto 0 不重置错误捕获
【发布时间】:2013-03-10 16:20:18
【问题描述】:

我的印象是On Error GoTo 0 重置错误处理。

那么为什么On error resume next 似乎没有在下面注册呢?

Sub GetAction()
Dim WB As Workbook
Set WB = ThisWorkbook

On Error GoTo endbit:
'raise an error
Err.Raise 69
Exit Sub
endbit:
On Error GoTo 0 '<<<reset error handling?

On Error Resume Next
WB.Sheets("x").Columns("D:T").AutoFit
MsgBox "ignored error successfully and resumed next"    

End Sub

【问题讨论】:

  • @Olle Sjögren 在这篇文章中有很多特定于 Excel 的内容,所以我认为通用 VBA 标签不适合不重新编写以使问题与所有其他 Office 产品相关。强行复制一个有类似问题的人是不公平的,比如 Powerpoint。
  • 顺便说一句,更通用的问题是stackoverflow.com/questions/14158901/…,如下所述。
  • @Remou 好的,没问题。我只是觉得On Error GoTo -1 的答案足够笼统,足以保证vba 标签。
  • @OlleSjögren 我知道你来自哪里,这是一个折腾好的,在我看来,这个特定的问题中有很多 Excel。如果你感觉很强烈,我不会反击:)

标签: excel error-handling vba


【解决方案1】:

您需要使用On Error GoTo -1 Err.Clear 来重置错误捕获。

查看我几个月前发布的this answer以获得更详细的说明。

【讨论】:

  • 大声笑 - 这个链接是正确的 - 真的好像我的问题是重复的 - 我已经投票通过参考你的其他答案来关闭它
  • Err.Clear 似乎不允许设置另一个错误处理程序。在设置另一个 On Error... 之前,我只能使用 On Error GoTo -1 获得所需的结果(如果出现错误则跳过几行代码,然后再次执行类似的操作) - 请参阅此处的示例 stackoverflow.com/questions/11998836/…
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多