在VBA中,我正在编写一个简单的脚本,记录正在使用的电子表格的版本。
Private Sub Workbook_Open()
version = "1.0"
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "<WEB SERVICE>"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("version=" + version)
End Sub
过程正常,但是...
我尝试做一个尝试捕捉,所以如果网络主机离线,而不是显示一个运行时错误,我抓住它,并抑制。
在VBA中尝试catch而不显示错误消息的最佳方法是什么?
3条答案
按热度按时间dfddblmv1#
例如,如果您想因错误而更改URL,则可以执行以下操作
此外,如果你的感觉真的尝试/朗朗上口,你可以模仿这样的。
所以把它扩展到真正的核心...
还值得注意的是,在
on error goto
样式中发生的任何错误都不会得到处理,因此如果您这样做将导致未处理的异常
不会导致任何异常,因为VBA会忽略所有异常。
shyt4zoc2#
大概是这样的
在VBA中可能如下所示:
但是,此表单可能没有遵循最佳做法。
n3h0vuf23#
这是为了将特雷弗的公认答案推广到那些通过搜索来到这里的人,我还在其中加入了我自己的方法。
此外,我更喜欢只尝试捕获真正需要的东西,所以我也包括了尽快结束错误捕获。
立即就地处理错误,并在以下情况后恢复:
(我添加了这个方法。我认为它是最接近实际Try-Catch块的方法。)
立即在底部处理错误并退出子组件:
在底部立即处理错误,并在某个点继续:
先忽略所有错误,稍后运行并处理它们:
如果要分别处理它们: