前言
多年前给公司的合作项目做过一个物业收费通知单生成的小工具,是通过在excel上使用VB实现的,计算水电费、租金、管理费等费用,然后生成收费通知单后分发给客户。
当时数据量不大,点个按钮一下子就生成了,但随着数据量扩大,点了生成数据后跑的时间会加长,没有进度条的话很容易让使用的人以为是死机了……
于是就有增加个进度条的想法,也是给自己当年挖下的坑打个补丁,效果如下:
实现教程
1.新建按钮
打开excel--->开发工具--->插入--->命令按钮
然后在ecel空白处插入按钮,双击按钮会进入vb编辑器
2.插入窗体
右键VB编辑器左侧导航栏的Miscrosoft Excel对象--->插入--->用户窗体
用户窗体界面如下:
我们先修改下用户窗体的一下属性:
名称修改为:JinDuTiao
Caption修改为:进度条
新建框架
修改尺寸:
把刚才新增的框架的width设置成需要的长度,然后把窗体拉长使得可以显示完整的框架
我这里设置成320
在Frame框架上新增插入label标签,这个label标签就是用来跑进度条的
设置label标签参数:
BackColor背景颜色设置成自己喜欢的颜色(进度条颜色)
Width宽度设置成0(进度条从0开始跑)
3.进度条代码
回到excel界面,双击按钮,在按钮函数插入如下代码:
Private Sub CommandButton1_Click()
TotalCount = 5000 '进度条计数,实际场景的话如果是循环函数,这里应该是遍历或循环的总次数
T = Timer '进度条
With JinDuTiao '窗体
.Show 0 '调用打开窗体
.Caption = "程序运行中,请稍候......" '//根据实际情况改一下显示内容
For i = 1 To TotalCount
'这里写主体程序部分,即你的循环或遍历操作
'进度条模块放到主体程序下方
CurrentCount = CurrentCount + 1
.Label1.Width = Int(CurrentCount / TotalCount * 320) '//窗体设置: 底色为红色
.Frame1.Caption = CStr(Round((CurrentCount / TotalCount * 100), 4)) & "%" '//显示内容
.Caption = "程序运行中,已耗时......" & Format(Timer - T, "0") & "秒"
DoEvents '进度条刷新
Next
End With
Unload JinDuTiao '//关闭窗体
End Sub
4.另存excel后缀为xlsm格式的文件
打开文件点击按钮即可
示例文件
天翼云盘:https://cloud.189.cn/web/share?code=ARZVrqZZvuIv(访问码:r6jo)
蓝奏云盘下载:https://busy.lanzouy.com/ik1rr1cw4nad 密码:89p1
百度云盘:?pwd=5jrp 提取码: 5jrp