UserForm Close Event

旧时模样 提交于 2019-12-12 12:23:31

问题


I have a UserForm which is opened and closed in a loop while a condition exists. The users can click several buttons which performs an action. The problem is the unpredictability of users. One of those problems is, users, instead of clicking one of the buttons, clicking the close window button on top of the UserForm which progresses the loop without performing an action.

--- edit---
Is there an event with that button with which I can execute code so that I can let it perform the same action as the cancel button on the form itself. I do not need to hide or disable it per se.


回答1:


For example, you can add the macro below to the UserForms code module:

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



回答2:


Instead of a MsgBox, you can just focus a button:

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

EDITED: I discovered a better option:

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


来源:https://stackoverflow.com/questions/34556520/userform-close-event

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!