VBA进度栏|使用VBA代码创建进度条形图

Excel中的Excel VBA进度栏

进度条 当我们运行大量需要大量时间才能执行的代码集时,它向我们显示了一个过程已完成或完成了多少,我们使用VBA中的进度条向用户显示该过程的状态,或者是否有多个在单个代码中运行的流程,我们使用进度条来显示哪个流程已进度了多少。

进度条显示了当实际任务在屏幕后面运行时完成的任务百分比,并提供了由代码给出的一组指令。

当VBA代码花费大量时间执行时,用户急于想知道它能完成多长时间。默认情况下,我们需要等待所有时间才能完成任务,但是通过插入进度条,我们可以了解VBA代码的进度。

在几乎所有计算机软件中,我们都看到一个进度条形图,该条形图显示了我们正在执行的任务的进度,如下图所示。

在excel中,我们可以使用VBA编码创建进度栏。如果您想知道我们如何创建进度条,那么这是为您量身定制的文章。

您可以在此处下载此VBA进度栏模板– VBA进度栏模板

创建自己的进度栏

为了创建进度条,我们需要遵循几个步骤。以下是创建进度条形图时涉及的步骤。

步骤1: 创建或插入一个新的用户窗体。

单击上面的选项后,您将看到如下所示的用户表单。

第2步: F4 键以查看VBA属性窗口。

在此属性选项卡中,我们需要更改已插入的VBA用户窗体的属性。

第三步: 将用户窗体的名称更改为UFProgressBar。

现在,我们可以在编码时使用名称为“ UFProgressBar”的用户表单。

第4步: 将用户窗体的显示模型属性更改为FALSE。

步骤5: 现在,根据需要调整用户的对齐方式。我已将用户窗体的高度更改为120,宽度更改为300。

步骤6: 将用户窗体的标题更改为“进度状态栏”。

步骤7: 现在,从用户表单的工具箱中,将LABEL插入到用户表单的顶部。

使用此标签,我们需要设置标签的属性。删除标题,使其为空白,然后调整标签的宽度。

步骤8: 将标签名称更改为“ ProgessLabel”。

步骤9: 现在,从工具箱中取出框架并在前面步骤中插入的标签下方绘制。确保框架位于用户表单的中心。

步骤10: 现在,我们需要更改Frame的某些属性,以使其看起来与我们插入的用户表单完全相同。

属性1: 将框架的名称更改为“ ProgressFrame”。

属性2: 删除标题并将其留空。

属性3: 将帧的特殊效果更改为 6 – fmSpecialEffectBump。

完成所有这些更改之后,我们的用户表单应如下所示。

步骤11: 现在再插入一个标签。这次将标签插入我们插入的框架内。

插入标签时,请确保标签的左侧完全适合我们插入的框架,如上图所示。

步骤12: 插入标签后,如下更改标签的属性。

属性1: 将标签名称更改为“ MainProgressLabel”。

属性2: 删除标题。

属性3: 根据您的意愿更改背景颜色。

好的,现在我们已经完成了设置进度条的过程,此时,它看起来像这样。

现在,我们需要输入代码以使其完美运行。

步骤13: 要制作框架,请在excel中添加以下宏。

代码:

 Sub InitUFProgressBarBar()With UFProgressBar .Bar.Width = 0 .Text.Caption =“ 0%”。显示vbModeless结尾为 

笔记: “ UFProgressBar”是给用户窗体的名称,“ Bar”是给我们创建的框架的名称,“ Text”是给框架内的标签的名称。

现在,如果您手动或通过F5键运行此代码,我们应该看到这样的进度条。

步骤14: 现在我们需要创建一个宏来执行我们的任务。我正在执行插入从1到5000的序列号的任务。连同此代码,我们还需要配置进度条形图,下面的代码是为您量身定制的代码。

代码:

 Sub ProgressBar_Chart()昏暗i等于长Dium CurrentUFProgressBar等于双Dim UFProgressBarPercentage等于Double Dim BarWidth直到i = 1调用InitUFProgressBarBar在i <= 5500 Cells(i,1)时执行。值= i CurrentUFProgressBar = i / 2500 BarWidth = UFProgressBar。 Border.Width * CurrentUFProgressBar UFProgressBarPercentage = Round(CurrentUFProgressBar * 100,0)UFProgressBar.Bar.Width = BarWidth UFProgressBar.Text.Caption = UFProgressBarPercentage和“完成百分比” DoEvents i = i + 1循环卸载UFProgressBar End Sub