【问题标题】:excel not closing correctly - userform hanging?excel没有正确关闭 - 用户窗体挂起?
【发布时间】:2015-12-07 09:06:28
【问题描述】:

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

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

  1. 只有在打开用户窗体时才会出现此问题。
  2. 除了按 Cancel(调用 Unload Me)外,无需对用户窗体执行任何操作即可导致弹出窗口

Workbook_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

以下是 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

这是一个用户表单错误,用户表单没有正确关闭吗?还是别的什么?

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

【问题讨论】:

  • 完全随机猜测但可能是personal.xlsb?
  • 我很确定如果有 .OnTime() 事件排队,Excel 无法真正完全关闭。
  • @findwindow,您能否扩展该评论​​?
  • @ExcelHero,该代码应该在工作表关闭之前停止 ontime 事件。无论如何,在我进行测试时,我没有启用自动保存功能
  • 如果您不熟悉,那么您不太可能使用它,但个人工作簿是一个隐藏的工作簿,通常用于保存用户想要在应用程序范围内应用的宏。您可以在herehere 阅读更多相关信息。编辑:顺便说一句,我会同意@excelhero 所说的话。他比我好很多^_^;

标签: vba excel userform


【解决方案1】:

有趣的是,我也遇到过同样的情况,它也是最近才出现的。 MOS 版本是否改变了这种行为?我在 Excel 12.0.6611.1000 和 12.0.6712.5000 上的用户没有收到此错误,但在 12.0.6729.5000 上总是出现此错误。

编辑; 在发现几个用户安装了“投递箱”后,我今天最终解决了这个问题。在关闭应用程序之前卸载或关闭投递箱解决了该问题。

【讨论】:

  • 最后,就是这样!!有没有一种方法可以像这样搜索两个程序之间的冲突?
  • 已经有一段时间了,但我用 Drop Box 打开了一张票,他们承认他们的软件是罪魁祸首。不幸的是,他们似乎正在花时间修复它。 Opened Ticket on Drop Box Website
  • 恭喜这个答案对我有用。这个问题可以很容易地证明。一个只有 1 个按钮的新工作簿,它调用一个 2 行宏,该宏加载并显示一个用户窗体,其中只有一个取消按钮和卸载我 ..,当然还有 VBA 项目的密码保护。谢谢 - 救了我几个小时。
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多