下面我们将查看Excel VBA中创建进度指示器的程序。我们将进度指示器保持尽可能简单,但看起来很专业。你准备好了吗?
我们将要创建的用户窗体如下所示:
要创建此用户窗体,请执行以下步骤。
1.打开Visual Basic编辑器。如果“项目资源管理器”不可见,请单击“视图”,“项目资源管理器”。
2.单击插入,用户窗体。如果“工具箱”没有自动出现,请单击“视图”,“工具箱”。屏幕设置如下。
该用户窗体仅包含三个控件。一个框架控件和两个标签控件。
3.添加框架控件。您可以通过在工具箱中单击框架来实现。接下来,您可以在用户窗体上拖动框架控件。您需要更改此框架控件的某些属性。右键单击框架控件,然后单击“属性”。清空“标题”字段,将“高度”设置为24,将“宽度”设置为204。
4.添加第一个标签控件并将其放置在Frame控件中。右键单击标签控件,然后单击“属性”。将名称更改为“条形”,将“背景色”更改为“突出显示”,清空“标题”字段,将“高度”设置为20,将“宽度”设置为10。
5.添加第二个标签控件并将其放置在Frame控件上方。右键单击标签控件,然后单击“属性”。将名称更改为文本,并将标题更改为“ 0%完成”。
6.将用户窗体的标题更改为进度指示器。
完成此操作后,结果应与前面显示的用户窗体的图片一致。
7.在工作表上放置一个命令按钮,并添加以下代码行以显示用户窗体:
UserForm1.Show
End Sub
如果您浏览了该站点上的其他Userform示例,则知道现在是创建Sub UserForm_Initialize的时候了。只要加载了用户窗体,此Sub就会自动运行。因此,当您对用户窗体使用Show方法时,代码将自动执行。我们创建Sub UserForm_Activate,而不是Sub UserForm_Initialize。通过使用此子,Excel VBA可以更新用户窗体以显示宏的进度。
8.打开Visual Basic编辑器。
9.在项目资源管理器中,右键单击UserForm1,然后单击“查看代码”。
10.从左侧下拉列表中选择“用户表单”。从右边的下拉列表中选择激活。
11.添加以下代码行:
代码
结束 子
说明:此子调用另一个将在稍后创建的名为代码的子代码。困惑?您可以浏览我们的功能和子章节以了解有关子的更多信息。如果您着急,只需执行以下步骤,就可以了。
12.将子命名的代码放入模块中(在Visual Basic编辑器中,单击“插入”,“模块”)。这只是一个例子。当您想为自己的宏使用此进度指示器时,这里就是添加您自己的代码的地方。代码如下。
Dim i As Integer,j As Integer,pctCompl as Single
Sheet1.Cells.Clear
for i = 1 到 100
For j = 1 到 1000
Cells(i,1).Value = j
Next j
pctCompl = i
progress pctCompl
接下来我
结束 子
说明:首先,我们初始化一些变量。接下来,我们清除sheet1。我们使用双循环在工作表的前100行中显示1到1000之间的值。这将使Excel VBA保持一段时间忙碌,并使我们有机会查看宏的进度。变量pctCompl(percentCompleted的缩写)测量宏的进度。最后,我们调用另一个名为progress的子项,并传递变量pctCompl的值以更新用户窗体。这样我们可以看到宏的进度!
13.添加另一个名为progress的子项。该代码如下所示:
UserForm1.Text.Caption = pctCompl和“已完成百分比”
UserForm1.Bar.Width = pctCompl * 2
DoEvents
End Sub
说明:第一行代码更改了第一个标签控件的标题。第二代码行更改第二标签控件的宽度。添加DoEvents以更新用户窗体。
14.退出Visual Basic编辑器,然后单击工作表上的命令按钮:
结果:
注意:对于此宏,我们使用变量i来衡量进度。例如,在第11行,完成了10%。对于您的宏,这可能会有所不同。将变量pctCompl的值传递给子进度以更新Userform的技术保持不变。