进度指示器在Excel VBA
下面我们就来看看在Excel VBA程序创建一个进度指示器。我们已经把进度指示器尽可能简单,但它看上去很专业。你准备好了吗?用户窗体,我们要创建如下所示:
要创建这个用户窗体,请执行下列步骤。
1.打开Visual Basic编辑器。如果项目资源管理器中是不可见,单击视图,工程资源管理器。
2.单击插入,用户窗体。如果工具箱没有自动出现,单击视图,工具箱。您的屏幕应该设置如下。
这只是用户窗体包含三个控件。帧控制和两个标签控件。
3.添加帧控制。您可以通过点击从工具箱框架做到这一点。接下来,您可以拖动用户窗体框架控制。您需要更改这个帧控制的一些性质。用鼠标右键单击帧控制,然后单击属性。清空标题字段,设置高度为24和宽度204
4.添加第一个标签控制,并将其放置在框架控件。用鼠标右键单击该标签控件,然后单击属性。名称更改为酒吧,背景色来突出,清空标题字段,设置高度为20和宽度10
5.添加第二个标签控件,并将其放置在框架控件上方。
用鼠标右键单击该标签控件,然后单击属性。
名称更改为文本和标题更改为“0%已完成”。
6.更改用户窗体到进度指示器的标题。
一旦这个已经完成,其结果应与前面显示的用户窗体的图片一致。
7.将工作表上一个命令按钮并添加以下代码行,以显示用户窗体:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
如果您已经通过本网站上的其他用户窗体例子走了,你知道,这是创建子UserForm_Initialize的时间。该子运行时自动用户窗体被加载。因此,当您使用Show方法用于用户窗体,代码将自动执行。取而代之的是子UserForm_Initialize的,我们创建了子UserForm_Activate。通过使用这种子,Excel的VBA可以更新用户窗体显示宏的进步。
8.打开Visual Basic编辑器。
9.在项目资源管理器,右击UserForm1上,然后单击查看代码。
10.从左边的下拉列表中选择用户窗体。从右侧的下拉列表中选择激活。
11.添加以下代码行:
Private Sub UserForm_Activate() code End Sub
说明:本次调用另一个子命名的代码,我们会在一分钟内创建。困惑?你可以通过我们的功能和次章,详细了解潜艇。如果你是在赶时间,只需要执行下面的步骤,你将被罚款。
12.将命名的代码到一个模块中的副(在Visual Basic编辑器,单击插入,模块)。这只是一个例子。这是当你想用这个进度指示器为自己的宏添加自己的代码的地方。代码如下所示。
Sub code() Dim i As Integer, j As Integer, pctCompl As Single Sheet1.Cells.Clear For i = 1 To 100 For j = 1 To 1000 Cells(i, 1).Value = j Next j pctCompl = i progress pctCompl Next i End Sub
说明:首先,我们初始化一些变量。接下来,我们清理工作表Sheet1。
我们使用双回路显示从1的值,以1000的前100行的工作表。这将保持Excel的VBA忙碌了一段时间,让我们有机会看到宏的进步。变量pctCompl(缩写percentageCompleted)测量宏的进步。最后,我们调用另一个名为子进步和传递变量pctCompl的值更新窗体。这样我们就可以看到宏的进步! 13.添加另一个子命名的进步。代码如下所示:
Sub progress(pctCompl As Single) UserForm1.Text.Caption = pctCompl & "% Completed" UserForm1.Bar.Width = pctCompl * 2 DoEvents End Sub
说明:第一行代码改变第一个标签控件的标题。第二个代码行改变第二标签控制的宽度。添加的DoEvents更新窗体。
14.退出Visual Basic编辑器,然后单击工作表上的命令按钮:
结果:
注:该宏,我们使用变量i来衡量进展情况。
例如,在列11,10%完成。这可能是您的宏不同。可变pctCompl的值传递给子进度更新用户窗体的技术是相同的。