Vba excel未正确关闭-用户窗体挂起?

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)

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

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

  • 只有在打开userform时才会出现此问题
  • 除了按Cancel(调用Unload Me)之外,无需对userform执行任何操作即可导致弹出窗口
  • 工作簿\u BeforeClose事件如下所示:

    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项目的密码保护。谢谢-节省了我的时间。