excel - 在没有消息框的情况下自动运行 VBA 宏
问题描述
我有一个 Excel 宏,我想在打开文件时自动运行它。我让它工作的唯一方法是msgbox
在调用我的子例程之前添加一个。但是,这需要我单击“确定”或关闭宏以运行该框。我尝试过使用定时msgbox
潜艇,但这也不起作用。
由于某种原因,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
解决方案
我从您的评论中得知您可能正在运行其他 shell 命令init
和updateIndex
.
需要明确的是,当你通过 VBA 中的 Shell 对象执行 Shell 命令时,默认行为是不等待 shell 命令完成后再运行下一行代码。
如果您希望 Excel 在继续之前等待 Shell 命令完成,您可以查看此问题的答案。
也就是说,如果您希望 Excel 在运行任何 shell 命令之前完全打开,您可以使用您最初想要的 MsgBox,但它必须是 VBA 的 MsgBox,您只需像这样调用它:
MsgBox "Measurement will begin shortly"
VBA 线程将等待“确定”按钮被按下,然后再继续执行。
推荐阅读
- c# - Blazor 事件回调问题父/子组件“没有与名称 'OnClickCallback' 匹配的属性”
- laravel - 迁移包和 Laravel 的问题
- python-3.x - 从 Pandas 数据框列中剥离字符
- python - 在 Python 中构造对称块矩阵
- google-chrome - 如何将 cookie 从 Chrome 传递到通过自定义协议处理程序启动的 IE?
- python - 烧瓶,无法在同一目录中导入python模块
- excel - Excel - 使用一个标准计算日期范围内的不同日期
- javascript - 在 ReactJS 应用程序的生产环境中添加源映射对性能有影响吗?
- php - .htaccess 文件在尝试清理 url 后抛出 500 错误
- azure-backup-vault - Azure Backup Vault 还原到另一台服务器