Закрытие пользовательской формы с помощью Unload Me не работает - PullRequest
23 голосов
/ 29 февраля 2012

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

Как мне закрыть пользовательскую форму от самого себя?

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

Unload Me

Ответы [ 3 ]

25 голосов
/ 19 сентября 2014

Как указано в верхнем ответе, я использовал следующее в коде за кнопкой управления.

Private Sub btnClose_Click()
    Unload Me
End Sub

При этом он не будет пытаться выгрузить элемент управления, а скорее будет выгружать пользовательскую форму, в которой находится элемент управления кнопки. Ключевое слово «Me» относится к объекту пользовательской формы, даже когда вызывается из элемента управления в пользовательской форме. Если вы получаете ошибки с этой техникой, есть несколько возможных причин.

  1. Возможно, вы вводите код не в том месте (например, отдельный модуль)

  2. Возможно, вы используете более старую версию Office. Я использую Office 2013. Я заметил, что VBA меняется со временем.

По моему опыту, использование метода DoCmd .... более конкретно относится к функциям макросов в MS Access, но обычно не используется в Excel VBA.

В нормальных (готовых) условиях приведенный выше код должен работать очень хорошо.

11 голосов
/ 04 марта 2012

Не видя ваш полный код, на это невозможно ответить с уверенностью.Ошибка обычно возникает, когда вы пытаетесь выгрузить элемент управления, а не форму.

Убедитесь, что у вас нет «я» в скобках.

Также, если вы можете опубликовать полный код для пользовательской формы, это очень поможет.

4 голосов
/ 29 февраля 2012

Unload Me работает только при вызове из пользовательской формы self. Если вы хотите закрыть форму из другого кода модуля (или пользовательской формы), вам нужно использовать функцию Unload + userformcclose name.

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

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