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

技术教程 · 2023-10-26

前言

多年前给公司的合作项目做过一个物业收费通知单生成的小工具,是通过在excel上使用VB实现的,计算水电费、租金、管理费等费用,然后生成收费通知单后分发给客户。

当时数据量不大,点个按钮一下子就生成了,但随着数据量扩大,点了生成数据后跑的时间会加长,没有进度条的话很容易让使用的人以为是死机了……

于是就有增加个进度条的想法,也是给自己当年挖下的坑打个补丁,效果如下:

1698290873123044209.gif

实现教程

1.新建按钮

打开excel--->开发工具--->插入--->命令按钮

2024-04-25T03:21:05.png

然后在ecel空白处插入按钮,双击按钮会进入vb编辑器

2024-04-25T03:21:22.png

2.插入窗体

右键VB编辑器左侧导航栏的Miscrosoft Excel对象--->插入--->用户窗体

2024-04-25T03:21:48.png

用户窗体界面如下:

2024-04-25T03:22:00.png

我们先修改下用户窗体的一下属性:

名称修改为:JinDuTiao

Caption修改为:进度条

2024-04-25T03:22:23.png

新建框架

2024-04-25T03:22:35.png

修改尺寸:

把刚才新增的框架的width设置成需要的长度,然后把窗体拉长使得可以显示完整的框架

我这里设置成320

2024-04-25T03:22:47.png

在Frame框架上新增插入label标签,这个label标签就是用来跑进度条的

2024-04-25T03:23:02.png

设置label标签参数:

BackColor背景颜色设置成自己喜欢的颜色(进度条颜色)

Width宽度设置成0(进度条从0开始跑)

2024-04-25T03:23:16.png

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

Theme Jasmine by Kent Liao