Мне нужно закрыть пользовательскую форму Excel с помощью VBA, когда пользователь нажал кнопку отправки и операции были выполнены.
Как я могу закрыть Userform от себя?
Я пробовал это, но он возвращает ошибку 361.
Unload Me
Ответ 1
Как указано в верхнем ответе, я использовал следующее в коде за элементом управления кнопкой.
Private Sub btnClose_Click()
Unload Me
End Sub
При этом он не будет пытаться выгрузить элемент управления, а скорее выгрузит форму пользователя, в которой находится элемент управления кнопки. Ключевое слово "Me" относится к объекту пользовательской формы, даже если вызывается из элемента управления в пользовательской форме. Если вы получаете ошибки в этой технике, существует несколько возможных причин.
Вы можете ввести код в неправильном месте (например,
отдельный модуль)
Возможно, вы используете более старую версию Office. Я использую Office 2013. Я заметил, что VBA меняется со временем.
Из моего опыта использование метода DoCmd.... более специфично для макросов в MS Access, но обычно не используется в Excel VBA.
В нормальных условиях (из коробки) приведенный выше код должен работать нормально.
Ответ 2
Без просмотра полного кода это невозможно с уверенностью ответить. Ошибка обычно возникает, когда вы пытаетесь выгрузить элемент управления, а не форму.
Убедитесь, что в скобках нет "me".
Также, если вы можете опубликовать полный код для пользовательской формы, это будет полезно в массовом порядке.
Ответ 3
Unload Me работает только при его вызове из пользовательской формы. Если вы хотите закрыть форму из другого кода модуля (или пользовательской формы), вам нужно использовать функцию Unload + userformtoclose name.