停用Excel VBA用户表单

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)

bon*_*igo 6

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显示他的代码后:

为什么我们需要进度条?

当宏需要很长时间才能运行时,人们会感到紧张.它崩溃了吗?还需要多长时间?我有时间去洗手间吗?放松...