我有一个宏excel,可以做很多事情。其中之一是运行查询(通过 ADODB.Connection)。查询可以持续很长时间,所以我想:
- 显示一个模式信息对话框,说“运行查询 3”(例如),没有任何按钮(用户不应该关闭它)。它应该对用户阻塞,但对宏不阻塞。
- 运行查询。
- 关闭信息窗口。
在伪代码中:
dim cn as new ADODB.Connection
dim rs as new ADODB.Recordset
dim dia as InfoDialog
set dia = new InfoDialog "running query 3"
cn.Open cn_string
rs.Open query_string, cn, ...
dia.close
我更喜欢无需导入新库(vba 编辑器 > 工具 > 参考)的解决方案。例如,使用类似于 'CreateObject("WScript.Shell")' 的东西。如果不可能,那么库导入也是受欢迎的(最好是标准库,因为不必在用户的计算机上安装东西)。
更新:根据 Kenda 的建议,我制作了一个带有标签“Label1”的 userForm“InfoDialog”,并创建了两个库函数以使其易于使用:
sub show_info(text as string)
InfoDialog.Label1.Caption = text
InfoDialog.Show
DoEvents
end sub
sub close_info()
InfoDialog.Hide
end sub
所以现在我可以写:
show_info "Connecting to db ..."
cn.Open cn_string
show_info "Running query ..."
rs.Open query_string, cn, ...
close_info