ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 15142|回复: 6

如何在程序运行时,显示进度?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-26 10:15 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求助!
如:我在程序运行期间关闭了屏幕显示,程序结束前打开屏幕显示。在程序运行期间,屏幕显示等待沙漏。由于程序运行时间长,容易给使用者造成死机的假象。
要求在程序运行期间,能有像安装程序类似的进度条显示。如“统计正在进行,请耐心等待”的提示,最好还能显示具体的进度。等统计程序结束后自动消失。
EXECL VBA里怎样实现?

TA的精华主题

TA的得分主题

发表于 2012-11-27 15:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 jeffy023 于 2012-11-27 15:30 编辑

在工作表中添加一个命令按钮,双击后写入下面的代码。
#001  Private Sub CommandButton1_Click()
#002      Dim i As Integer
#003      UserForm1.Show 0
#004      With UserForm1.ProgressBar1
#005          .Min = 1
#006          .Max = 10000
#007          .Scrolling = 0
#008          For i = 1 To 10000
#009              Cells(i, 1) = i
#010              .Value = i
#011              UserForm1.Caption = "正在运行,已完成" & i / 100 & "%,请稍候!"
#012          Next
#013      End With
#014      Unload UserForm1
#015      Columns(1).ClearContents
#016  End Sub
代码解析:
工作表中命令按钮的单击事件,在给工作表A1A10000单元格赋值的同时使用进度条显示其运行速度。
3行代码,使用Show方法显示进度条控件所在的窗体,并且设置为无模式显示。
56行代码,设置进度条控件的最小值和最大值,应与第8行代码中的循环计数器的start参数和End参数相一致。
7行代码,设置进度条控件显示为有间隔的。如果将Scrolling属性设置为1则显示为无间隔的。
9行代码,在单元格中进行无意义的填充数据以演示进度条。在实际应用中可以将进度条嵌入到程序的循环中。
11行代码,在窗体的标题栏中显示已完成的百分比。
14行代码,使用Unload 语句卸载窗体。
Unload 语句从内存中删除一个对象,语法如下:
Unload object
参数object参数是必需的,一个有效的对象。
15行代码,清空A列填充的数据。
点击命令窗口执行后效果如下:
1.jpg

TA的精华主题

TA的得分主题

发表于 2012-11-27 16:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-27 19:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢提供代码!
我可能没说清楚,程序运行的时间主要取决程序内两个for.....next循环,这两个循环的最大值是根据行数和列数统计出来的,这个行数和列数经常是变化的,程序会自动判断。
所以统计进度条的分子和分母无法事先知道。
如果进度条程序嵌入这个程序,或这个程序嵌入进度程序,执行的效率就会低。
最好进度条程序能根据时间进行进度前进。

TA的精华主题

TA的得分主题

发表于 2014-9-7 08:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 renahu 于 2014-9-7 09:19 编辑
jeffy023 发表于 2012-11-27 15:29
在工作表中添加一个命令按钮,双击后写入下面的代码。#001  Private Sub CommandButton1_Click()[/backcolo ...


这是往一万个单元格填数,如果是对一个没有具体数字的事情进行处理,如数据查询,提取。。这分母怎么定?

TA的精华主题

TA的得分主题

发表于 2014-12-16 10:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

来一个超级简单的,
假如“执行中”窗体名为:sst
   ......
   sst.show vbModeless
   .........
    Unload datahandle sst
   ...............
这样就能够实现了。。

TA的精华主题

TA的得分主题

发表于 2015-1-17 22:56 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 00:29 , Processed in 0.030762 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表