Есть подпрограмма, она создает пользовательскую CourtForm
форму, а затем берет из нее данные. Проблема возникает, когда указанная форма закрывается преждевременно, нажав кнопку окна «X», и позже я получаю сообщение об ошибке выполнения. Для справки вот о чем я говорю:
В моем коде я попытался проверить выход из подпрограммы:
Private Sub test()
'Create an exemplar of a form
Dim CourtForm As New FormSelectCourt
CourtForm.Show
'The form is terminated at this point
'Checking if the form is terminated. The check always fails. Form exists but without any data.
If CourtForm Is Nothing Then
Exit Sub
End If
'This code executes when the form proceeds as usual, recieves
'.CourtName and .CourtType variable data and then .hide itself.
CourtName = CourtForm.CourtName
CourtType = CourtForm.CourtType
Unload CourtForm
'Rest of the code, with the form closed a runtime error occurs here
End Sub
Судя по всему, экземпляр формы существует, но без каких-либо данных. Вот скриншот часов:
Как правильно проверить форму, если она закрылась преждевременно?
Добавьте следующий код в свою пользовательскую форму
Private m_Cancelled As Boolean
' Returns the cancelled value to the calling procedure
Public Property Get Cancelled() As Boolean
Cancelled = m_Cancelled
End Property
Private Sub UserForm_QueryClose(Cancel As Integer _
, CloseMode As Integer)
' Prevent the form being unloaded
If CloseMode = vbFormControlMenu Then Cancel = True
' Hide the Userform and set cancelled to true
Hide
m_Cancelled = True
End Sub
Код взят отсюда . Я бы очень порекомендовал прочитать там, так как вы найдете довольно хорошее базовое объяснение, как использовать пользовательскую форму.
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения