没有循环的进度条

我想我已经在整个互联网上search了一个简单的进度条,但是在函数/子结束之后我找不到一个进度条。

我将在下面的代码中演示我想要的。 我在VBA方面的知识基本上也是这样的。

我有一个表单,一个button,当我点击button,他应该执行这个:

Sub program() progressbarform.show Call function1 "set progressbar to 20%" Call funcion2 "set progressbar to 40%" Call function3 "set progressbar to 100%" "Unload progressbar form" End Sub 

你可以使用委托来完成这个工作。 你的进度条与你的函数1,2和3的执行是分开的,所以你应该尝试在进度条表单中执行。 在你调用form.Show之后,表单有焦点,而函数1,2和3在表单closures之前不会运行。

在你的进度条窗体中(假设它有一个标签和一个进度条控件)放置一个函数来更新你的进度条:

 Public Sub UpdateProgress(intProgress As Integer, Optional strMessage As String) If Not IsMissing(strMessage) Then lbl_Progress.Caption = strMessage End If pb_Progress.Value = intProgress Call Me.Repaint End Sub 

然后你可以在你的进度条表单中执行你的函数。 你可以通过设置调用它作为一个对象来暴露你的函数的forms,或者只是将函数1,2和3存储在你的进度条窗体中。

 Sub RunFunctions() UpdateProgress 0, "Starting functions" UpdateProgress 10, "Begin function1" Call function1 UpdateProgress 30, "Finished function1" UpdateProgress 50, "Begin function2" Call function2 UpdateProgress 70, "Finished function2" UpdateProgress 90, "Begin function3" Call function3 UpdateProgress 100, "Finished function3" UpdateProgress 100, "Finished All Functions" End Sub 

如果您需要帮助,请向我提出任何问题。

 Sub program() UserForm1.ProgressBar1.Min = 0 UserForm1.ProgressBar1.Max = 100 UserForm1.ProgressBar1.Value = 0 UserForm1.Show vbModeless Call function1 UserForm1.ProgressBar1.Value = 20 Call funcion2 UserForm1.ProgressBar1.Value = 40 Call function3 UserForm1.ProgressBar1.Value = 100 End Sub 

你的示例代码将工作。

当你执行你的子代码时,代码是按顺序运行的。 所以当function1时,下面的代码将不会在function1完成之前执行,对于所有其他函数也是如此。

最大的问题可能是将进度条控制到你的表单上。 我试过(非常快),因为图书馆没有注册,所以不会让我加一个。

您可以使用标准控件创build一个虚假的进度条。

用2个Labels制作一个表单,其中第一个是你的进度颜色,另一个是xx%

现在,脚本在每一步都会改变两个Labels的宽度,左边的Label变宽,右边的Label左边的位置将以相同数量的像素移动,并更新第二个标签的Caption。 在左侧Label达到100%时,请保留足够的空间