Снимите флажок, если нажата кнопка (X) -Закрыть пользовательской формы - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть пользовательская форма, которая активируется всякий раз, когда я устанавливаю флажок на листе, и если я снимаю флажок, он скрыт от экрана.Проблема в том, что когда я нажимаю красную кнопку закрытия (X) на пользовательской форме, флажок не снимается, но должен, поскольку пользовательская форма больше не отображается на экране.Я не знаю, как это исправить.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Я решил это:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
ThisWorkbook.Worksheets("Sheet1").CheckBox1.Value = False
End If
End Sub
0 голосов
/ 24 ноября 2018

Хотя это может быть не лучшим решением, вы можете использовать следующий код в событии 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

Несколько лучшим способом может быть использование следующего кода в обычном модуле для флажка вместо приведенного выше кода в модуле пользовательской формы.Таким образом, форме не нужно знать о флажке, который вызвал ее.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...