excel - 当 VBA 错误处理程序导致错误时该怎么办?
问题描述
我目前正在开发一个更大的程序,该程序可能会在某些时候引发错误。所以我为这种情况添加了一个错误处理程序。其主要目标是关闭打开的 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
. 编辑:它应该是因为“发生第二个错误时错误处理程序仍然处于活动状态,因此第二个错误不会被 On Error 语句捕获。” -来源
TL;DR:wbk
如果它是打开的,则应该在错误处理中关闭它,但它会引发错误。
编辑:
我强制错误以调用错误处理程序。所述错误仅在第二次执行中发生,因此wbk
正常设置该值,然后关闭工作簿并再次调用程序并在再次wbk
初始化之前强制错误。
解决方案
在第二次执行期间,wbk
它在被调用后具有任何值wbk.Close
,这不是Nothing
. 由于上面的 Nothing 检查,我现在Set wbk = Nothing
在关闭后明确设置并且不再发生错误。
顺便提一句。我更改了响应,因为在恢复代码时关闭工作簿实际上没有意义。
推荐阅读
- javascript - 检查表格而不提交?
- django - Nginx 静态文件不加载 Django
- pandas - Pandas:如何拆分和读取值
- java - 如何使用 Hibernate 将 JSON 格式的字符串插入 H2 数据库?
- excel - 在 VBA Excel 中按形状对象对形状进行分组
- shell - 尝试对 ip 列表进行 nmap 扫描。它不会通过 $ 列表
- wordpress - 如何从 kirki 预设控件中设置 Kirki 排版值
- python - 如何在 Kivy 应用程序中播放媒体播放器 vlc
- python - dj-rest-auth,邮件过期时间不到一天
- javascript - 如何在 Vue 2 项目中配置函数在构建过程中不被混淆