VBA проблема при повторном открытии формы - PullRequest
0 голосов
/ 27 июня 2018

Я создаю пользовательский интерфейс с VBA и у меня возникает проблема при закрытии формы с помощью кнопки X.

  1. Главное окно имеет несколько кнопок; один из них вызывает форму для идентификации пользователя. Очень простой код ниже:

    Private Sub CommandButton3_Click()
        Main_Form.Hide
        Identification_Form.Show
    End Sub
    
  2. Затем открывается форма идентификации; Он имеет текстовое поле, в котором пользователь вводит свое имя, и кнопку OK для подтверждения и отслеживания процесса. Тем не менее, я хочу, чтобы пользователь мог закрыть это окно с помощью кнопки X и вернуться к основной форме. Код ниже:

    Public how_closing As Integer
    
    Private Sub UserForm_Terminate()
        If how_closing = 0 Then
            Main_Form.Show
        End If
    End Sub
    
    Private Sub UserForm_Activate()
        how_closing = 0
    End Sub
    
    Private Sub OK_Id_Click()
        If TextBox1.Text = "" Then
            MsgBox "Please enter your name."
            Exit Sub
        End If
        user_name = TextBox1.Text
        how_closing = 1
        Unload Identification_Form
        Third_Form.Show
    End Sub
    

    Переменная how_closing используется, чтобы узнать, происходит ли выгрузка формы из-за нажатия кнопки OK или кнопки X (поведение, конечно, не должно быть одинаковым).

Моя проблема заключается в следующем: Если я запускаю идентификацию в первый раз, все работает нормально. Но если я закрою его (кнопка X), а затем перезапущу, ничего не получится; кнопка OK не реагирует, как и кнопка X. Все, что я могу сделать, это остановить все macros.

Вы когда-нибудь видели такого рода ошибку?

1 Ответ

0 голосов
/ 27 июня 2018

Есть два варианта:

Ответ 1 (быстрый способ) - просто добавьте это в свой код и живите дальше:

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

Ответ 2 (трудный путь, для изучения некоторых основ ООП потребуется около 2 месяцев):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...