如果按下了用户窗体的(X)-关闭按钮,请取消选中该复选框

时间:2018-11-24 17:45:09

标签: excel vba excel-vba

我有一个用户窗体,只要我选中工作表上的复选框,就会激活该用户窗体;如果不选中它,则该窗体将从屏幕上隐藏。问题是,当我按下用户窗体中的红色关闭(X)按钮时,该复选框不会取消选中,而是应该取消选中,因为用户窗体不再出现在屏幕上。我不知道该如何解决。

2 个答案:

答案 0 :(得分:1)

尽管可能不是最佳做法,但您可以在QueryClose事件中使用以下代码

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

    ' Prevent the form being unloaded
    If CloseMode = vbFormControlMenu Then Cancel = True

    ' Hide the Userform
    Hide

    ThisWorkbook.Worksheets(1).Shapes("Checkbox1").OLEFormat.Object.Value = 0

End Sub

我假设您不使用ActiceX-Control,并且复选框的名称为 CheckBox1

更好的方法可能是在复选框的普通模块中使用以下代码,而不是在userform模块中使用以上代码。这样,表单就不必知道调用它的复选框了。

Sub Checkbox_code()

Dim f As UserForm1
Dim b As CheckBox

    Set f = New UserForm1
    Set b = ThisWorkbook.Worksheets(1).Shapes("Checkbox1").OLEFormat.Object

    If b.Value = xlOn Then
        f.Show
        b.Value = xlOff
    End If

End Sub

答案 1 :(得分:0)

我已经解决了:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
ThisWorkbook.Worksheets("Sheet1").CheckBox1.Value = False
End If
End Sub