【问题标题】:UserForm Close Event用户窗体关闭事件
【发布时间】:2016-04-06 00:31:00
【问题描述】:

我有一个用户窗体,它在条件存在时循环打开和关闭。用户可以点击几个按钮来执行一个动作。问题在于用户的不可预测性。其中一个问题是,用户不是单击其中一个按钮,而是单击 UserForm 顶部的关闭窗口按钮,该按钮会在不执行任何操作的情况下进行循环。

--- 编辑---
该按钮是否有一个事件,我可以使用它执行代码,以便我可以让它执行与表单本身的取消按钮相同的操作。我不需要隐藏或禁用它本身。

【问题讨论】:

  • 下次在你提问之前尝试谷歌搜索,这个问题已经在整个互联网上被问过并回答了数万次。
  • 谢谢@vacip,我试过了,可能不够广泛或搜索词错误,但我在 SO 网站上找不到。我稍微改变了我的问题,因为我的偏好是让按钮与表单上的取消按钮相同,并且我不希望将其隐藏为您已将其标记为重复询问的问题。
  • 嗯,现在它是 thisthis 的副本 :) 但我承认,你的问题现在比这些更重要。

标签: vba userform


【解决方案1】:

例如,您可以将下面的宏添加到 UserForms 代码模块中:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = True
        MsgBox "You can't close the dialog like this!"
    End If
End Sub

【讨论】:

  • 你打败了我。 :)
  • 感谢@SamGilbert,这正是我所需要的,因为现在我可以将它指向模块中的取消按钮单击事件,这比禁用它更符合我的偏好。
  • 我用的是Access 2016,没有QueryClose这样的Event。我尝试输入此代码,但事件没有触发。有谁知道为什么?
【解决方案2】:

您可以只关注一个按钮,而不是 MsgBox:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = True
        Me.Close_Button.SetFocus
    End If
End Sub

已编辑:我发现了一个更好的选择:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    ' YOUR CODE HERE (Just copy whatever the close button does)

    If CloseMode = vbFormControlMenu Then
        Cancel = False
    End If

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2015-07-30
    • 2018-01-11
    • 1970-01-01
    相关资源
    最近更新 更多