我使用Userform创建了Macro,它有许多静态控件,并在用户表单初始化时显示。但它也有(Userform初始化代码)代码,使用sheet1中的数据动态地在其中一个框架中添加复选框。这需要一些时间(比如30秒-1分钟),具体取决于表格中的数据。
在此期间,我希望用户显示%完成的进度条。
我尝试了Application.Statusbar功能,但它没有锻炼。所以想去Progressbar吧。有人可以帮忙吗?
答案 0 :(得分:1)
这是我过去五六年来使用的进度条(最初发布在http://www.mrexcel.com/forum/excel-questions/527468-progress-bar.html)。
我会遵循Rorys的建议,如果您要创建数百个控件,请使用列表框。
创建名为“进度条”的表单
给它这些尺寸:
名称:ProgressBar
身高:49.5
宽度:483.75
ShowModal:False< ----这个位很重要,否则它将无法正确更新。
使用以下尺寸向表单添加标签:
名称:BoxProgress
文字说明:BoxProgress
身高:18
左:6
上:6
宽度:468
BackColour:& H008080FF&
在普通模块中添加以下程序:
Sub UpdateProgressBar(n As Long, m As Long, Optional DisplayText As String)
'// DarkSprout April08
'// Omit DisplayText to display progress percentage
On Error GoTo ERR_HANDLE
If n >= m Then
ProgressBar.Hide
Else
If ProgressBar.Visible = False Then ProgressBar.Show
ProgressBar![BoxProgress].Caption = IIf(DisplayText = "", Round(((n / m) * 10000) / 100) & "%", DisplayText)
ProgressBar![BoxProgress].Width = (n / m) * 468
DoEvents
End If
Exit Sub
ERR_HANDLE:
Err.Clear
ProgressBar.Hide
End Sub
在您的代码中使用它:
Sub test()
Dim x As Long
For x = 1 To 100
UpdateProgressBar x, 100
Next x
End Sub
每次希望进度条更新时,您都需要调用该过程。
变量:
m 表示条形图的最大数量, n 表示要显示的当前值。