我需要一些有关Excel中代码的帮助。 我创建了ProgressBar,并希望在我的宏运行时正常运行并显示(带有%)。
我尝试在主宏中添加参数UserForm1.Show vbModeless
和UserForm1.Repaint
,但是没有用。
我的用户窗体进度条的代码如下:
Private Sub UserForm_Activate()
Dim reminder As Long
Dim i As Long, j As Long
reminder = 0
For i = 1 To 200
UserForm1.Label2.Width = UserForm1.Label2.Width + 1
If i Mod 2 = 0 Then
reminder = reminder + 1
UserForm1.Caption1 = reminder & " % completed"
End If
For j = 1 To 150
DoEvents
Next j
Next i
Unload UserForm1
End Sub
使用此方法时看到的内容-UserForm在0%处停止并且我的主宏正在运行结束,然后带有ProgressBar的UserForm从0到100%运行并关闭,但是我想同时使用UserForm和Main Macro
请帮助我解决这个问题。
答案 0 :(得分:0)
那样不能工作。您需要3个功能 一个显示用户窗体进度栏为0%。 那么您需要一个函数来更新您的表格 结束功能删除表格 此代码未经测试,请参见我在此处发布的测试代码!
Dim counter As Long
Public Sub UserForm_Activate()
counter = 0
UserForm1.Label2.Width =0
UserForm.show
End Sub
Public Sub UserForm_update()
if counter <100 then counter=counter+1
UserForm1.Label2.Width = counter
DoEvents
end sub
Public Sub UserForm_close()
counter = 0
UserForm.hide
End Sub
'somewhere in a module or class
sub calculate
call UserForm_Activate()
for i=0 to 100
call UserForm_update()
'whatever
' Sleep (200) if this very handy OS call is included somewhere
next
call UserForm_close
end sub
答案 1 :(得分:0)
工作: 我创建两个非模态!表单名为“进度栏” (带有1个文本框“ NAMED”计数器) 和“测试人员” (带有隐藏和显示的3个名为NAMED的按钮)
进度栏中的代码:
Dim count As Long
Public Sub progressbar_show()
count = 0
progressbar.Show
End Sub
Public Sub progressbar_update()
If count < 100 Then count = count + 1
progressbar.counter.Text = Str(count)
DoEvents
End Sub
Public Sub progressbar_close()
counter = 0
progressbar.hide
End Sub
测试器中的代码:(在进度条中调用例程)
Private Sub count_Click()
Call progressbar.progressbar_update
End Sub
Private Sub hide_Click()
Call progressbar.progressbar_close
End Sub
Private Sub show_Click()
Call progressbar.progressbar_show
End Sub
按设计工作。 单击按钮上的文本框将在每次单击时更新。 请注意,我如何从窗体调用函数到另一窗体。表单名称必须包括在内。控件的名称也必须匹配。重命名控件和表单是个好主意。我用1700个控件制作了一个AutoCAD VBA。几周后就没乐趣了 想像一下commandbutton_762 actuelly可以做什么;)