gpt4 book ai didi

excel - VBA错误处理程序导致错误时该怎么办?

转载 作者:行者123 更新时间:2023-12-03 09:07:55 25 4
gpt4 key购买 nike

我目前正在开发一个较大的程序,该程序有时可能会引发错误。所以我为这种情况添加了一个错误处理程序。这样做的主要目的是关闭打开的excel工作簿wbk,这样我就不会在后台运行太多的excel应用程序。据我所知,程序的哪一部分可能导致错误,我不知道wbk的状态以及它是否打开。我尝试添加对Nothing的检查,但那时wbk is Nothing似乎是错误的。使用以下代码,当调用错误处理程序时,我将获得The remote server machine does not exist or is unavailable (Error 462):

错误处理程序

On Error Resume Next
resp = MsgBox(prompt:="Es ist ein Fehler aufgetreten! " & vbCrLf & vbCrLf & "Soll versucht werden weiter fortzufahren?" & _
vbCrLf & vbCrLf & "Fehlercode: " & str(Err.Number) & " entstanden durch " & Err.Source & Chr(13) & Err.Description, _
Buttons:=vbCritical + vbYesNo + vbDefaultButton1, _
title:="Unbekannter Fehler", _
HelpFile:=Err.HelpFile, _
Context:=Err.HelpContext)

If Not wbk Is Nothing Then
wbk.Close False
End If

If resp = vbNo Then Exit Sub
Resume Next

Afaik,由于 On Error Resume Next,我什至都不会出错。 编辑:应该这样做,因为“当发生第二个错误时,错误处理程序仍处于 Activity 状态,因此,On Error语句不会捕获第二个错误。” - source

TL; DR: wbk如果已打开,则应在错误处理中将其关闭,但会引发错误。

编辑:
我强制执行错误以调用错误处理程序。该错误仅在第二次执行中才会发生,因此 wbk值正常设置,然后关闭工作簿并再次调用程序,并在再次初始化 wbk之前强制执行该错误。

最佳答案

在第二次执行期间,wbk具有调用wbk.Close之后具有的值,这不是Nothing。现在,我确实在关闭后明确设置了Set wbk = Nothing,由于上述Nothing检查,该错误不再发生。

顺便说一句。我更改了响应,因为恢复代码后关闭工作簿并没有真正意义。

关于excel - VBA错误处理程序导致错误时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60790850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com