请问在VBA,制作窗体,在程序运行时窗体显示“正在运行……”,程序运行完后,窗体自动隐藏。

uerform1.show#其它程序#uerform1.hide但当程序运行时,必须要关闭了窗体“#其它程序#”才会继续运行,请问怎么解决呢?万分感谢啊!... uerform1.show

#其它程序#
uerform1.hide
但当程序运行时,必须要关闭了窗体“#其它程序#”才会继续运行,请问怎么解决呢?万分感谢啊!
展开
 我来答
苦龄乐d
2017-03-26 · TA获得超过3526个赞
知道小有建树答主
回答量:393
采纳率:14%
帮助的人:138万
展开全部

这是很简单的事情,有人居然说不能实现?你新建一个窗体,加一个LABEL1,然后在程序开始时调用窗体:UserForm1.Show 0:DoEvents,弹出提示,在程序结束时卸载窗体:Unload UserForm1,就搞定了。通过UserForm1.Label1.Caption = "****字符串***"语句还可以在过程中根据环境设置不同的提示。上传了一个附件,大家放心使用,为本人编写,不存在版权问题。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
Dim i&
UserForm1.Show 0
DoEvents    '没有DoEvents,窗体会空白
UserForm1.Label1.Caption = "正在载入数据,请稍等……"
DoEvents
For i = 1 To 100    '可以把循环替代成具体事务
    Sleep 100: DoEvents
Next
UserForm1.Label1.Caption = "正在进行计算,请稍等……"
DoEvents
For i = 1 To 100
    Sleep 100: DoEvents
Next
Unload UserForm1
End Sub


zzhilling
推荐于2016-04-28 · TA获得超过2700个赞
知道大有可为答主
回答量:3255
采纳率:45%
帮助的人:1115万
展开全部
VBA是单线程,只有一条代码执行完毕后才会执行后面的代码

比如假设你用一个死循环一直运行
如果你中间 选择开始另一个函数执行,这个死循环就会被终止掉,然后执行你选择的功能
除非你用其他触发条件或方法重新启动那个死循环,否则那个死循环就不会自己启动的
更多追问追答
追问
那请问大神,在VBA中有没有可以实现:在程序运行时弹出“正在运行,请稍候……”提示的方法呢?不胜感激啊!
追答
不要用弹出窗口的方式,这样会让程序停止
你可以在excel某个表格的格子里面显示

比如
A1 显示"正在运行,请稍候……"

range("a1").value = "正在运行,请稍候……"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寂静阳
2019-03-22 · 超过12用户采纳过TA的回答
知道答主
回答量:41
采纳率:100%
帮助的人:13.1万
展开全部

我也是这个问题才来搜索的,总结前面几人的回答,在二楼(答题用户:QQ471515510)找到了答案。但二楼并没有说明问题的真正所在,我几次百度有如下总结:                           

1、决定userform1.show后面的程序是否继续运行的关键在于show的运行模式 ,show的后面是有参数的userform1.show [模式]                                                                               

(1)模式为1时表示模式窗体,即userform1.show 1。用户必须对窗体做出处理后程序才                会继续运行。                

(2)模式为0时表示无模式窗体,即userform1.show 0。窗体弹出后余下的程序会继续运                行。               

(3) 如果模式参数省略,则默认是模式窗体。                                                                  

参考资料1:网页链接

2、二楼所使用的等待函数“sleep”不是vba中的函数,所以他加了                             

“Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)”                           此函数在32位操作系统下能用但在64位操作系统下报错,在64位操作系统下能用但在32 位操作系统下报错。vba习惯用timer,但timer也有缺陷,详细请看参考资料2                

参考资料2:网页链接            

3、在“userform1.show 0”和“unload userform1”语句之需要加上等待时间语句,否            则窗体的打开和关闭就是一瞬间的事,你根本意识不到窗体曾经打开过,还以为是程序写错了。                                                                                                               

上面1、2条所有内容都来自于参考资料1和参考资料2,并非原创,3作为温馨提示。(那我为什么要写呢?因为如果老是搜索,大家都不写点什么下次上哪里去搜索。)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式