Подтвердить что ты не робот

Закрытие Userform с помощью Unload Me не работает

Мне нужно закрыть пользовательскую форму Excel с помощью VBA, когда пользователь нажал кнопку отправки и операции были выполнены.

Как я могу закрыть Userform от себя?

Я пробовал это, но он возвращает ошибку 361.

Unload Me
4b9b3361

Ответ 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.

Я надеюсь, что это поможет