Excel不能正确关闭-用户表单挂起



我有一个包含6个用户表单的电子表格,在大约30台计算机上使用。VBA代码有密码保护。通常当我们关闭工作表时,会出现VBA项目密码框,而excel.exe仍然在任务管理器中。

我做了一些测试,得出以下结论:

  1. 这个问题只发生在用户表单被打开的时候。
  2. 不需要对用户表单做任何事情来导致弹出,除了按取消(调用卸载我)

workbook_beforelose事件如下:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
'Cancel autosave
Sheets("BOH General").Range("A102").Value = 0
AutoSaveTimer
'Application.EnableEvents = False
If Not Sheets("START").Visible = True Then Call CostingMode
Call BackItUp
'Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

下面是Workbook_BeforeClose调用的一些宏:

Sub AutoSaveTimer()
If Sheets("BOH General").Range("A102").Value > 0 Then
    RunWhen = Now + TimeSerial(0, Sheets("BOH General").Range("A102").Value, 0)
    Application.OnTime EarliestTime:=RunWhen, Procedure:="AutoSaveIt", _
        Schedule:=True
Else
    On Error Resume Next
    Application.OnTime EarliestTime:=RunWhen, Procedure:="AutoSaveIt", _
        Schedule:=False
    On Error GoTo 0
End If
End Sub
Sub AutoSaveIt()
ThisWorkbook.Save
Call AutoSaveTimer
End Sub
Sub BackItUp()
'Dont run if unsaved
If Sheets("BOH General").Range("A111").Value = "" Then Exit Sub
'Prompt
If MsgBox("Do you want to backup this sheet now (recommended if you made any changes)?", vbYesNo) = vbNo Then Exit Sub
'reformat date
Dim DateStamp As String
DateStamp = Format(Now(), "yyyy-mm-dd hh-mm-ss")
On Error Resume Next
MkDir ActiveWorkbook.Path & "" & "Backup"
On Error GoTo 0
ActiveWorkbook.SaveCopyAs (ActiveWorkbook.Path & "" & "Backup" & "" & ActiveWorkbook.Name & " - backup " & DateStamp & ".xlsb")
ActiveWorkbook.Save
End Sub

这是一个用户表单错误,是用户表单没有正确关闭?还是其他原因?

UPDATE:此错误仅在用户单击excel关闭按钮(右上角)后发生,单击文件>关闭不会产生错误。

有趣的是,我一直在经历同样的实例,它最近才突然出现。MOS的某个版本改变了这种行为吗?我有Excel 12.0.6611.1000和12.0.6712.5000的用户没有得到这个错误,在12.0.6729.5000它总是发生。

编辑;在发现几个用户安装了"Drop Box"后,我今天解决了这个问题。在关闭应用程序之前卸载或关闭下拉框已解决此问题。

最新更新