上一章《VBA进度条ProgressForm1》介绍了ProgressForm1进度条窗体的使用方法,但它是基于ProgressBar控件设计的,由于ProgressBar控件无法在64位版本的Office中运行,存在向后兼容的问题,为此我们采用Label控件来模拟进度条,以解决在64位版本的Office中无进度条控件使用的问题。
一、设计思路
添加两个重叠的Label标签控件,一个作为进度条的背景,一个作为进度条填充的前景,通过动态改变前景标签的长度,即可模拟出进度条不断变化的效果,如下图1。
图1
二、使用方法
ProgressForm2.UpdateProgress(MaxValue, CurrentValue)
MaxValue 表示最大步数,CurrentValue 表示当前步数。
三、使用演示
ProgressForm2进度条使用演示,代码如下:
Sub Demo_ProgressForm2()
'
' Label进度条演示,执行过程请不要关闭窗体,否则会出错。
'
Application.ScreenUpdating = False ' 禁用屏幕更新
Dim totalSteps As Long
Dim i As Long
' 创建并显示进度条窗体
Dim progForm As New ProgressForm2
progForm.Show vbModeless ' 非模态显示
totalSteps = 10
For i = 1 To totalSteps
' 这里执行你的任务代码...
Application.Wait (Now + TimeValue("0:00:01")) ' 模拟耗时操作
progForm.UpdateProgress totalSteps, i ' 更新进度条
Next i
Application.Wait (Now + TimeValue("0:00:01")) ' 延时1秒显示完整进度
Application.ScreenUpdating = True ' 启用屏幕更新
' 关闭进度条窗体
Unload progForm
Set progForm = Nothing
MsgBox "处理完成!", vbInformation, "提示"
End Sub
ProgressForm2窗体演示效果,如下图2:
图2
三、下载地址
点击下方地址可下载ProgressForm2窗体文件,在VBA编辑窗中导入即可直接使用,内附使用方法。
下一章, 我将向大家介绍另一款模拟进度条ProgressForm3,它与ProgressForm2类似,但ProgressForm3是用方块显示的进度条,样式看起来与ProgressBar控件很像,敬请关注!