cod*_*rix 1 excel vba excel-vba userform
我在Excel vba中有一些宏,并且我在Excel工作表上执行一些功能,大约需要30秒才能完成.所以我希望在这段时间内显示带有进度条的用户表单.
我尝试userform.show
在函数的最开始使用,userform.hide
最后但我发现在后台无法执行任何操作.
因此,只想知道是否有任何转向,以便在显示表单时在后台完成处理.
非常感谢 :)
Private Sub CommandButton1_Click()
'--------------Initialize the global variables----------------
UserForm1.Show
nameOfSheet2 = "Resource Level view"
nameOfSheet3 = "Billable Hours"
nameOfSheet4 = "Utilization"
'-------------------------------------------------------------
Dim lastRow, projectTime, nonProjectTime, leaveAndOther
Dim loopCounter, resourceCounter
lastRow = 0
projectTime = 0
nonProjectTime = 0
leaveAndOther = 0
resourceCounter = 2
Set workbook1 = Workbooks.Open(File1.Value)
Sheet3Creation
Sheet2Creation
Sheet4Creation
UserForm1.Hide
End Sub
Run Code Online (Sandbox Code Playgroud)
Progress Bar的用法是显示当前运行代码的进度.我不知道是否有人想在代码运行时对表单做任何事情......
无论如何,如果您想在表单显示时与工作表进行交互,您可以尝试添加以下代码:
UserForm.Show vbvModeless
Run Code Online (Sandbox Code Playgroud)
要更新Modeless
表单,必须DoEvents
在子例程中添加.
如果要在结尾处关闭表单,请执行以下操作:
UserForm.Unload
Run Code Online (Sandbox Code Playgroud)
这是我要做的:
单击按钮以运行宏
Private Sub Button1_Click()
Call userform.show vbMmodeless
End Sub
Private Sub UserForm_activate()
Call Main '-- your macro name
End Sub
Sub Main()
'-- your code
DoEvents '-- to update the form *** important
useroform.Unload
End Sub
Run Code Online (Sandbox Code Playgroud)
OP显示他的代码后:
在你的情况下,我并没有真正看到你正在使用在后台运行的任何类型的代码.因此,添加进度条可能会使您的代码更慢以更新它,您可能会调用额外的循环... 如果您真的想要进度条,请查看此参考文章:),
另一种是使用Timer
或更小的技术方式将相应地包装系统计时器滴答和刷新/更新表格.在VBA Excel中,我们没有像C#或VB那样幸运.
归档时间: |
|
查看次数: |
8648 次 |
最近记录: |