Excel上使用vb实现进度条教程

刘_学 | skill | 2023-10-26

前言

多年前给公司的合作项目做过一个物业收费通知单生成的小工具,是通过在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

百度云盘:https://pan.baidu.com/s/1ympoqiIYj8H2RIKE6jtAeQ?pwd=5jrp 提取码: 5jrp

评 论