【问题标题】:Messagebox on file open does not get focus文件打开时的消息框没有获得焦点
【发布时间】:2017-08-16 14:00:56
【问题描述】:

我有一个 excel 文件,当文件打开时会打开一个消息框。但是,当我打开文件时,由于消息框,文件及其消息框不会出现在我的窗口前面获得焦点(它们出现在我的任务栏上,我必须从那里单击它)。消息框完成后,文件正常获得焦点。

以最简单的形式,这段代码似乎触发了这个

Sub Auto_Open()
MsgBox ""
End Sub

我尝试在执行消息框之前添加代码以赋予窗口焦点,但没有成功。我不介意这个问题,但其他人会使用这个文档。有解决办法吗?

【问题讨论】:

  • 你运行的是什么版本?无法在 Excel 2010 上重现。
  • 我使用的是 Excel 2013
  • 只有这段代码的新工作簿会重现问题吗?见minimal reproducible example
  • 是的。一个只有 auto_open 或 workbook_open 的新文件会导致同样的问题。
  • 我在另一台计算机(也是 Excel 2013)上尝试了我的代码并得到了相同的结果。我从 auto_open 中删除了消息框,因为它并不重要,只是首选。不过,谢谢你的帮助

标签: excel vba


【解决方案1】:

无论Application.EnableEvents 的状态如何,旧版Auto_Open 自动宏都将运行,如果另一个启用宏的工作簿需要打开该工作簿,这可能会出现问题。

我无法在 Excel 2010 上重现此问题,此代码位于 Module1

Sub Auto_Open()
    MsgBox "Auto_Open()"
End Sub

这个代码在ThisWorkbook:

Private Sub Workbook_Open()
    MsgBox "Workbook_Open()"
End Sub

我收到两个连续的消息框,首先来自Workbook_Open,然后来自Auto_Open,它们都显示在我期望的位置 - 就在一个空工作表的中间:

尝试将消息框放在ThisWorkbookOpen事件处理程序中,看看是否有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多