Vba excel未正确关闭-用户窗体挂起?
我有一个包含6个用户表单的电子表格,在大约30台计算机上使用。VBA代码受密码保护。关闭工作表时,通常会出现VBA项目密码框,excel.exe仍保留在任务管理器中 我做了一些测试,得出以下结论:Vba excel未正确关闭-用户窗体挂起?,vba,excel,userform,Vba,Excel,Userform,我有一个包含6个用户表单的电子表格,在大约30台计算机上使用。VBA代码受密码保护。关闭工作表时,通常会出现VBA项目密码框,excel.exe仍保留在任务管理器中 我做了一些测试,得出以下结论: 只有在打开userform时才会出现此问题 除了按Cancel(调用Unload Me)之外,无需对userform执行任何操作即可导致弹出窗口 工作簿\u BeforeClose事件如下所示: Private Sub Workbook_BeforeClose(Cancel As Boolean)
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
以下是工作簿_在关闭前调用的一些其他宏:
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
这是否是userform错误,userform是否未正确关闭?还是别的什么
更新:此错误仅在用户单击excel关闭按钮(右上角)后发生。单击文件>关闭不会产生错误。有趣的是,我也遇到过相同的实例,最近才出现。MOS版本是否改变了这种行为?我在Excel 12.0.6611.1000和12.0.6712.5000上的用户没有收到此错误,在12.0.6729.5000上,此错误总是发生 编辑;
今天,我发现有几个用户安装了“Drop Box”,于是解决了这个问题。在关闭应用程序之前卸载或关闭drop box解决了这个问题。完全随机猜测,但personal.xlsb可能?我很确定,如果有.OnTime()事件排队,Excel无法真正完全关闭。@findwindow,您能对该评论进行扩展吗?@ExcelHero,代码应该在工作表关闭之前停止ontime事件。在任何情况下,当我进行测试时,我没有启用自动保存功能。如果您不熟悉,那么使用它的可能性很小,但个人工作簿是一个隐藏的工作簿,通常用于保存用户希望在应用程序范围内应用的宏。你可以阅读更多关于它的信息。编辑:顺便说一句,我同意@excelhero的说法。他比我强得多;最后,就这样!!有没有一种方法可以搜索这样两个程序之间的冲突?已经有一段时间了,但我打开了一个Drop Box的罚单,他们承认他们的软件是罪魁祸首。不幸的是,他们似乎正在花他们的甜蜜时间来修复它;祝贺这个答案对我起了作用。这个问题很容易证明。一个只有1个按钮的新工作簿,该工作簿调用一个2行宏,该宏加载并显示一个用户表单,其中只有一个带有Unload me的Cancel按钮。。当然还有VBA项目的密码保护。谢谢-节省了我的时间。