gpt4 book ai didi

vba - 仍然暂停代码执行的无模式形式

转载 作者:行者123 更新时间:2023-12-04 18:44:47 24 4
gpt4 key购买 nike

无论如何,是否有一个无模式的用户表单,同时仍然像模态表单一样暂停代码执行?

我希望显示用户窗体,但仍允许与父程序交互。模态表单阻止与父程序的交互。无模式表单可以工作,但我希望代码执行在表单启动时暂停。

我通过创建一个检查表单是否可见的无限循环来解决这个问题,但这似乎有点hacky。

Public Sub GetFormInfoAndDoStuff    
ufForm.show vbModeless

Do while ufForm.Visible
DoEvents
Loop

' Do other stuff dependent on form
End Sub

编辑澄清 .show 之后的代码必须在用户表单完成后执行

最佳答案

您应该能够将表单显示为 vbModeless并且仅在特别请求时执行代码,即来自 CommandButton或其他控制。

然后通过“X”按钮或通过另一个调用 UserForm_Terminate 的控件使表单保持可见/显示,直到它被特别关闭。事件。

为了实现这一点,您可能需要将一些可执行代码移动到另一个子例程和/或模块中,并例如从 CommandButton_Click 调用此子例程。事件。

您已经在某处有一个子例程,其中包含如下行:

Sub ShowTheForm()

UserForm1.Show vbModeless
End Sub

因此表单正确显示以允许用户输入到父应用程序。

您实际上不需要在上述模块中添加任何其他代码。我们会将其他代码放在其他模块/子程序中,然后从命令按钮等用户控件中调用它。

示例:

获取所有可执行代码,并将其放入另一个子例程(如果它适合您的组织偏好,则另一个模块),例如:
Sub MyMacro(msg$)
MsgBox msg
End Sub

在用户窗体上,添加一个命令按钮并为其分配以下代码:
Sub CommandButton1_Click()
MyMacro "hello"
End Sub

现在,表单将一直显示,直到用户单击“X”按钮。代码只会在从命令按钮调用时运行。

编辑澄清

您无需使用此方法“暂停”执行。一旦表单无模式显示,执行就会结束,并且表单仍然存在。该对象具有一些事件,您可以使用这些事件来触发代码的进一步执行。

关于vba - 仍然暂停代码执行的无模式形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859038/

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