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