VBA窗体之进度条

2016年12月16日08:41:07 评论 9,581 views
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页

在程序需要运行较长时间时加上一个进度条可能会显得更加高大上一些,这节我们来看下怎样制作进度条,这里介绍两种方法,一种是用标签控件结合文本框来实现进度条效果,一种是直接利用VBA的进度条控件。

下面来看第一种方法,其思路是以一个文本框做为白色背景,以一个标签控件覆盖于文本框之上,随着程序的运行不断调整标签控件的宽度来覆盖文本框就有了进度条的效果。在这里我又在文本框的中间加了一个标签来以数字形式显示进度。

Private Sub CommandButton1_Click()
Dim i, w, k, n
w = TextBox1.Width      '文本框的宽度
n = 10000               '运行的步数
For i = 1 To n
k = k + w / n         '标签的宽度
Label1.Width = k
Label2.Caption = Format(i / n, "0.00%")
DoEvents              '有这句才会实时显示标签变化
Next
MsgBox "完成"
End Sub

上面就是一个简单的数学问题,总进程长度是文本框的长度w,总步数为n,则每运行一步标签控件长度需增加w/n。需要提前在属性窗口设置好Lable1的颜色,文本框的Enable属性要设成False,否则运行之前文本框会有个光标在闪,Lable2的BackStyle要选0,即透明,否则就把文本框遮住了。

上面是第一种方法第二种方法是直接利用VBA的进度条控件。初始的话工具窗中一般不显示,需要在附加控件中勾选“Microsoft ProgressBar Control”。

Private Sub CommandButton1_Click()
Dim i, n
n = 10000
ProgressBar1.Max = n
ProgressBar1.Min = 0
For i = 0 To n
ProgressBar1.Value = i
Next
MsgBox "完成"
End Sub

这个用起来就简单了,分别设置进度条的最大值为总步数、最小值为0,运行到哪一步就直接使Value等于该值即可,没啥好说的了。在属性窗体中通过Scrolling可以设置进行条的显示形式,是连续的还是隔断的。

本节示例文件下载:http://pan.baidu.com/s/1W8Aa

  • 郑广学老师微信号
  • EXCEL880B
  • weinxin
  • 我的微信公众号
  • EXCEL880
  • weinxin