【发布时间】:2020-10-30 10:43:03
【问题描述】:
我有一个 Excel 宏,我想在打开文件时自动运行它。我让它工作的唯一方法是在调用我的子例程之前添加一个msgbox。但是,这需要我单击“确定”或关闭宏以运行该框。我试过使用定时msgbox sub,但这也不起作用。
由于某种原因,msgbox 在 Excel 完全打开之前弹出,此时宏卡在此处(代码如下)。从这里开始,我尝试等待文件本身被打开,直到它处于写入模式 (Workbook.ReadOnly = false)。这也不起作用。
Public Sub msgBoxTimer()
Const timeout = 2
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Popup "Measurement will begin shortly", timeout
End Sub
Private Sub Workbook_Open()
Call msgBoxTimer
Call init ' initiate device
Call updateIndex ' collect & record measurements
End Sub
【问题讨论】:
-
在调用
init和updateIndex之前不调用msgBoxTimer会发生什么? -
看起来
init和updateIndex也在 Excel 完全打开之前运行。一旦子程序完成,开始屏幕就会消失。所以我想我现在的问题是如何让宏等到 Excel 完全打开,同时在宏启动之前完全加载文件? (由于我现在需要的 msgbox 已过时,我将删除)我尝试了Application.Wait Now + waitTime但这仍然会暂停 Excel 起始屏幕窗口上的宏。