gpt4 book ai didi

vba - "Please Wait"弹出消息

转载 作者:行者123 更新时间:2023-12-02 01:43:23 30 4
gpt4 key购买 nike

我正在尝试在 Excel VBA 中创建请稍候消息。这是为了提醒处理 SQL 查询的用户该过程仍在进行中。我希望将此消息显示在用户表单中。

当前,用户连接到 SQL DB,选择数据库和一些其他选项,按 Go...,并且表单不会卸载。在 Go 点,我有另一个表单,其中弹出消息 Please Wait,但该表单不会卸载,即 SQL 执行命令不会运行。

我的调用请稍候用户表单的代码,包括标签:

   Call WaitShowSQl.ExecuteCall KillWaitCall WaitShow
SQl.Execute
Call KillWait

在另一个代码模块中我有:

   Sub WaitShow()
Wait.Show
End Sub

Sub KillWait()
Unload Wait
End Sub

我有一个名为 wait 的用户表单,代码如下:

Private Sub UserForm_Activate()
Call PleaseWait
End Sub

Sub PleaseWait()
Wait.Label1.Caption = "Calculating...Please Wait!"
End Sub

现在,在执行代码时,运行时不会向后移动模块以执行以下操作:

SQl.ExecuteSQl.Execute

我可以使用状态栏显示程序的进度,但用户窗体弹出消息对于该程序非常有用。

最佳答案

Form.Show 方法的默认行为是将窗体显示为模式对话框。您正在寻找的是一个非模式对话框,因此您需要指定它,如下所示:

Sub WaitShow()
Wait.Show vbModeLess
End Sub

更新:

如果您无法使用无模式对话框,您还有其他选择,如评论中所述。其中之一是让等待用户窗体执行 SQL。这可以这样做:

在等待表单中,首先声明变量

Private mySomeParameter1 As String
Private mySomeReturnValue1 As String

'Input parameters to the form
Public Sub Init(ByVal some_parameter1 As String, ...)
... Initialize your SQL, NOT execute it
End Sub

'Output values from the from
Public Sub GetReturns(ByRef some_return_value1 As String, ...)
... set the output parameters...
End Sub

'Do the work
Private Sub UserForm_Activate()
Call PleaseWait
'Either call DoEvents or a manual Refresh to let the label display itself
Call ExecutSQL ' A function that executes the SQL
Unload Me
End Sub

在主窗体中:

Sub WaitShow()
Wait.Init(the parameters...)
Wait.Show
Wait.GetReturns(the results...)
End Sub

您的另一个选择是完全跳过“等待”表单,而是在主窗体上显示“等待”图像,并在 SQL 处理完成后将其隐藏。

关于vba - "Please Wait"弹出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8615127/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com