VBA模拟进度条
在上一章中我跟大家介绍了ProgressBar控件的使用方法,但由于该控件无法在64位版本的Office中运行,为此我们可以采用Lable控件来模拟进度条的变化,以解决在64位版本的Office中无进度条控件的问题。
一、设计思路
添加两个重叠的Lable标签控件,一个作为进度条的背景,一个作为进度条填充的前景,通过动态改变前景标签的长度,即可模拟出进度条不断变化的效果,如下图1。
图1
二、使用演示
添加窗体和控件的方法这里就不重复讲解了,不懂的操作的可以回看上一章《VBA如何添加PorgressBar进度条控件》的内容,调用模拟进度条窗体的代码如下:
Sub Demo_ProgressForm2()
'
' Lable进度条演示,执行过程请不要关闭窗体,否则会出错。
'Application.ScreenUpdating = False ' 禁用屏幕更新Dim totalSteps As LongDim i As Long' 创建并显示进度条窗体Dim progForm As New ProgressForm2progForm.Show vbModeless ' 非模态显示totalSteps = 10For i = 1 To totalSteps' 这里执行你的任务代码...Application.Wait (Now + TimeValue("0:00:01")) ' 模拟耗时操作progForm.UpdateProgress totalSteps, i ' 更新进度条Next iApplication.Wait (Now + TimeValue("0:00:01")) ' 延时1秒显示完整进度Application.ScreenUpdating = True ' 启用屏幕更新' 关闭进度条窗体Unload progFormSet progForm = NothingMsgBox "处理完成!", vbInformation, "提示"End Sub
运行效果如下图2:
图2
三、窗体文件下载
将ProgressForm2的窗体文件导入Excel中即可直接调用,注意在运行过程中不要关闭进度条 窗体,否则会导致Excel进程崩溃并异常退出。
下载地址:https://download.csdn.net/download/bigtoothcat/90948266?spm=1001.2014.3001.5501