Проблема: я создаю пользовательскую форму с кнопками «Отправить» и «Отмена».Я хочу, чтобы вся форма очищала введенные данные и закрывала форму, если пользователь нажимает кнопку «Отмена», но я также пытаюсь встроить ту же функциональность, если пользователь нажимает красную «X» в верхнем правом углу.Мне неясно, где мне нужно выгрузить форму.В настоящее время он размещен в методе btnCancel_Click()
, и я могу запустить форму, ввести некоторые данные и нажать «Отмена», после чего форма закроется.
Но когда я пытаюсь повторно запустить форму во 2-й раз, я получаю сообщение об ошибке (я приложил изображение этого сообщения), которое говорит
«Ошибка времени выполнения» -2177418105 (80010007): Ошибка автоматизации - Callee (сервер [не серверное приложение]) недоступен и пропал; все соединения недействительны. Возможно, вызов выполнен.
Если удалить Unload Me
с btnCancel_Click()
тогда форма может закрываться и снова открываться очень хорошо, но любые данные, которые я ввел в первый раз, все еще будут в форме и не будут очищены должным образом. Мне интересно, если это ошибка Unload Me
илимне нужно сбросить все элементы управления формой при инициализации формы?
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' how was the form closed?
' vbFormControlMenu = X in corner of title bar
If CloseMode = vbFormControlMenu Then
' cancel normal X button behavior
Cancel = True
' run code for click of Cancel button
btnCancel_Click
End If
End Sub
'******************************************************************
Private Sub btnCancel_Click()
mbCancel = True
Me.Hide
Unload Me
End Sub
'*********************************************************************
Private Sub UserForm_Initialize()
'Populate values for 2 combo boxes
lastEmp = Sheets("Form_Ref").Cells(Rows.Count, 1).End(xlUp).Row
Me.cmbBoxEmpName.List = Sheets("Form_Ref").Range("A2:A" & lastEmp).Value
lastBld = Sheets("Form_Ref").Cells(Rows.Count, 2).End(xlUp).Row
Me.cmbBoxBuildingName.List = Sheets("Form_Ref").Range("B2:B" & lastBld).Value
End Sub
'******************************************************************
Public form As New CheckOutForm
Sub testFormOptions()
'Button pressed within Excel will start program and show the userform
form.Show
End Sub
![enter image description here](https://i.stack.imgur.com/oOSx7.png)