Excel vba как удалить форму

Содержание

  1. VBA — Как переименовать или удалить модуль или форму
  2. Как переименовать или удалить модуль или форму VBA
  3. Переименование модуля
  4. Удаление модуля
  5. Именование модулей и форм
  6. VBA Close UserForm
  7. Excel VBA Close Userform
  8. How to Close UserForm in Excel VBA?
  9. #1 – Close Userform Using “Unload Me” Statement in VBA
  10. #2 – Close UserForm Using Hide Method in Excel VBA
  11. Difference Between Unload & Hide in Excel VBA
  12. VBA Excel. Программное создание формы
  13. Программная работа с формой
  14. Создание
  15. Отображение
  16. Удаление
  17. Добавление кнопки на форму
  18. Запись процедуры в модуль
  19. Текст процедуры
  20. Способ 1
  21. Способ 2
  22. Пример создания и удаления формы

VBA — Как переименовать или удалить модуль или форму

Как переименовать или удалить модуль или форму VBA

При первой вставке модуля в VBA ему автоматически будет присвоено имя «Модуль1», А последующий модуль станет Module2, Module3 и т. Д. Аналогичным образом, когда вы вставляете пользовательскую форму, она будет называться UserForm1, UserForm2 и т. Д.

Переименование модуля

Чтобы переименовать модуль или форму, вам необходимо включить окно свойств в вашем VBE.

Если окна свойств не отображаются, нажмите F4 или перейдите в строку меню и выберите Вид, Характеристики Окно.

  1. Щелкните модуль, который хотите переименовать, в Обозреватель проекта.
  2. Выберите свойство name в Окно свойств (модуль будет иметь только это свойство; форма имеет несколько свойств)

3. Удалите имя модуля (в данном случае Module1) и введите имя, которое вы хотите назвать своим модулем.

4. Нажмите Enter, чтобы переименовать модуль.

Таким же образом вы переименовываете свои формы.

Удаление модуля

Иногда вам может потребоваться удалить модуль или форму, которые вам больше не нужны.

Щелкните правой кнопкой мыши модуль или форму, которые вы хотите удалить, чтобы отобразить контекстное меню, вызываемое правой кнопкой мыши.

Нажмите Удалять (в этом случае Модуль2)

Нажать на Файл меню, а затем нажмите Удалите (Module2).

Появится окно с предупреждением, в котором вас спросят, хотите ли вы экспортировать модуль или форму, прежде чем удалять их. Экспорт модуля или формы позволяет сохранить его как отдельный файл для использования в другом проекте Excel в другое время.

Чаще всего, когда вы удаляете модуль или форму, это происходит потому, что он вам не нужен, поэтому нажмите Нет.

Именование модулей и форм

Рекомендуется переименовывать модули и формы, чтобы дать им более понятные имена. Например, если UserForm1 будет формой для ввода сведений о счете, мы можем переименовать ее в frmInvoices. Точно так же, если Module1 будет использоваться для хранения некоторых общих функций, которые будут повторно использоваться в вашем коде, вы можете переименовать его в basGeneral или modGeneral (в зависимости от того, какие соглашения об именах вы хотите использовать).

Источник

VBA Close UserForm

When we make a UserForm, it takes data as input from users. But the data provided to the form does not close itself, so it can mislead the user to input data again. So, we use two different commands to close a userform when we give the input. They use the “Unload Me” method to close a UserForm, or we can use a UserForm.Hide method.

Table of contents

Excel VBA Close Userform

UserForms are vital while getting inputs from the user as part of the VBA project. We usually design the UserForm before we present it in front of the user. Once designing the VBA UserForm completes, we need to show up the same in front of the user and require VBA coding. Similarly, to close the UserForm requires VBA coding knowledge.

This article will show you how to close the UserForm in VBA coding.

You are free to use this image on your website, templates, etc., Please provide us with an attribution link How to Provide Attribution? Article Link to be Hyperlinked
For eg:
Source: VBA Close UserForm (wallstreetmojo.com)

How to Close UserForm in Excel VBA?

We must keep showing the UserForm in front of the user completing the purpose of the UserForm. So, we must close the UserForm. We can close the userform by using the “Unload Me” and “UserForm.Hide” statements. Even though both are slightly different, they will eventually serve our purpose.

#1 – Close Userform Using “Unload Me” Statement in VBA

For example, look at the below image of the UserForm.

We have named the UserForm “MyUserForm.”

If we run the UserForm, we will see the UserForm like below.

We need to fill in the required details. Once we fill in the information, if we click on the “Submit” button, it will capture the same data to the worksheet, which is visible on the left side.

Clicking the “Submit” button captured the data we had entered in the UserForm.

If you notice, we have one more button called “Cancel.” What does this do?

Before we display the UserForm, we need to configure this button. So, we will go back to the basic visual editor to configure this button.

In this procedure, we need to write the VBA code Write The VBA Code VBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task. read more about what should happen if we click the “Cancel” button. When we click on this “Cancel” button, it should close the UserForm we are working on now.

So, write the code as “Unload Me.”

Code:

“Unload Me” is the word we use to close the UserForm we are working on. Here the UserForm recognizes the word “Me” as the UserForm itself.

“Unload Me” can be used only on that UserForm procedure. We cannot call this statement in other modules. If called, it will show the error message as “Invalid use of Me Keyword.”

Let us run the code using the F5 key or manually now. First, we will see a blank UserForm.

Fill in the data and click on “Submit.”

Once we click the “Submit” button, it will store the values to the mentioned cells.

If the data entry is complete, we need to close the UserForm. Isn’t it?

So, click on the “Cancel” button to close the UserForm. It will close the UserForm.

#2 – Close UserForm Using Hide Method in Excel VBA

We can also close UserForm using the “Hide” method in VBA. Once again, we will double-click the “Cancel” button to see the private subprocedure.

Since we have already written the code to close the UserForm, we can see the existing code in VBA. So, now we will delete this.

We need to call the UserForm by its name to use the “Hide” method. In this case, our UserForm name is “MyUserForm.”

After mentioning the UserForm by its name, if we put a dot (.), we can see all the properties and methods of this UserForm. Now, we will select the “Hide” method.

Let us run the UserForm one more time. We will see a blank UserForm. Fill in the details first.

Now, without a click on the “Submit” button, we will click the “Cancel” button, which will hide the UserForm.

Difference Between Unload & Hide in Excel VBA

It would help if you had a question about the difference between “Unload” and “Hide,” where both serve a similar purpose. There is a difference between these two. Now first, we will use the “Unload Me” statement. Look at the below image.

We have entered the data in the user form but have not yet submitted it. Therefore, if we click on “Cancel,” it will unload the UserForm.

Even though we had entered the data correctly by mistake, we clicked on the “Cancel” button. When the new UserForm appeared, we filled the data from scratch.

Now, we will use the “Hide” method.

No, we will click on the “Cancel” button. It will hide the visible UserForm. But, when we re-run the macro, it will come back with the data we have already entered on the UserForm.

Like this, we can use the “Unload” statement and “Hide” method to close the UserForm in Excel VBA.

Источник

VBA Excel. Программное создание формы

Программное создание пользовательской формы из кода VBA Excel. Добавление на форму кнопки и события Click в модуль созданной формы. Удаление формы.

Программная работа с формой

Создание

Пользовательская форма программно (динамически) может быть создана только как элемент коллекции VBComponents проекта VBA:

Число (3) означает, что создается форма, если заменить его на (1), будет создан стандартный модуль.

Значения свойствам формы myForm, как элемента коллекции VBComponents, присваиваются следующим образом:

Присвоенные значения параметров динамической формы, как элемента коллекции VBComponents, сохраняются при закрытии формы.

Для элемента коллекции UserForms присвоение значений свойств будет выглядеть следующим образом:

Присвоенные значения параметров динамической формы, как элемента коллекции UserForms, не сохраняются при закрытии формы.

Я не рекомендую работать из кода VBA Excel с программно созданной формой, как элементом коллекции UserForms, кроме случая, когда необходимо отобразить динамическую форму на экране. В других случаях можно получить непредсказуемые результаты, например, могут не работать программно созданные кнопки, а также они будут исчезать при закрытии формы.

Отображение

Здесь возникает проблема: у динамической формы, созданной как элемент коллекции VBComponents, нет метода, который позволил бы ее отобразить на экране.

Чтобы обойти это препятствие, преобразуем нашу форму myForm в элемент коллекции UserForms, как в предыдущем примере, и выводим ее на экран с помощью метода Show:

Удаление

Удаление программно созданных форм, если это не однократное действие, крайне важно. Если этого не предусмотреть, то все вновь создаваемые формы будут сохраняться и накапливаться в проекте VBA.

Удаляем динамически созданную форму с именем myForm1 следующим образом:

Программно удалить форму можно только через элемент коллекции VBComponents, так как у элемента коллекции UserForms удаление не предусмотрено (нет соответствующего метода).

Добавление кнопки на форму

Код VBA Excel, добавляющий командную кнопку на динамически созданную форму и задающий ее свойства:

Здесь, при создании кнопки на основе элемента коллекции VBComponents, добавляется только объект Designer, которого нет при программном создании элементов управления на основе элемента коллекции UserForms (также смотрите пример кода ниже). Константы, указывающие на класс создаваемого элемента управления, используются те же.

Запись процедуры в модуль

В модуль динамически созданной формы myForm запишем код, который будет выполняться при клике по программно созданной в предыдущем примере кнопке myButton (объектная переменная) с именем «myCommandButton». Этот код создает на форме элемент управления Label, выравнивает его и записывает в него текст: «Ура! Новая кнопка работает!».

Текст процедуры

Обработка события Click для кнопки с именем «myCommandButton»:

Способ 1

Первый способ предназначен для записи в модуль формы myForm кода процедуры целиком. Для этого используется метод AddFromString:

Все прямые кавычки из текста процедуры заменены на функцию Chr(34), где 34 – числовой код парной прямой кавычки.

Способ 2

Этот способ предполагает запись кода процедуры в модуль формы myForm построчно. Для этого используется метод InsertLines:

Свойство модуля CountOfLines возвращает количество уже имеющихся в модуле строк, что позволяет с помощью переменной n добавлять новые строки ниже. Это актуально, если используется для записи кода уже существующий модуль, или новый модуль, в который записывается сразу несколько процедур.

Пример создания и удаления формы

Пример кода VBA Excel по динамическому созданию новой пользовательской формы, добавлению на нее командной кнопки и программного кода в ее модуль:

Пример удаления формы «myForm1», созданной процедурой «AddNewForm»:

Вы можете скопировать этот код в стандартный модуль и проверить его работоспособность. После отображения динамически созданной пользовательской формы, нажмите кнопку «Новая кнопка». Результат работы кода:

Если хотите увидеть программно записанный код в модуле формы, кликните по форме правой кнопкой мыши и выберите в контекстном меню «View Code».

После удаления программно созданной формы, создать новую с тем же именем без перезагрузки Excel не получится. Без перезагрузки можно создавать любое количество динамических форм с разными именами.

Перезагрузка Excel – это закрытие всех открытых рабочих книг с последующим открытием любой книги.

Как скопировать пользовательскую форму из одной книги Excel в другую книгу с помощью кода VBA смотрите в статье Экспорт и импорт пользовательской формы.

Источник

 

IgorK77

Пользователь

Сообщений: 37
Регистрация: 14.05.2016

Всем доброго вечера уважаемые любители и профессионалы форума!
Парни, подскажите как можно с редактора  Visual Basic удалить лишние модули и формы?
С уважением Igor

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

ПКМ-Remove…-Не_сохранять

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

 

IgorK77

Пользователь

Сообщений: 37
Регистрация: 14.05.2016

 

IgorK77

Пользователь

Сообщений: 37
Регистрация: 14.05.2016

#5

19.06.2016 21:16:41

Здравствуйте , Юрий, не заметил Вашего сообщения.
vikttur мне подсказал как раз что надо… При попытке создать автоматическую заставку, наделал несколько форм и модулей, а как удалять их не знал…
Спасибо!

Программное создание пользовательской формы из кода VBA Excel. Добавление на форму кнопки и события Click в модуль созданной формы. Удаление формы.

Программная работа с формой

Чтобы программно создавать формы и модули, в настройках Excel должна быть установлена галочка в опции «Доверять доступ к объектной модели проектов VBA», расположенной по адресу: «Файл» >> «Параметры» >> «Центр управления безопасностью» >> «Параметры центра управления безопасностью» >> «Параметры макросов».

Создание

Пользовательская форма программно (динамически) может быть создана только как элемент коллекции VBComponents проекта VBA:

Dim myForm As Object

Set myForm = ThisWorkbook.VBProject.VBComponents.Add(3)

Число (3) означает, что создается форма, если заменить его на (1), будет создан стандартный модуль.

Значения свойствам формы myForm, как элемента коллекции VBComponents, присваиваются следующим образом:

With myForm

    .Properties(«Name») = «myForm1»  ‘Иногда эта строка вызывает ошибку

    .Properties(«Caption») = «Эта форма создана программно»

    .Properties(«Width») = 300

    .Properties(«Height») = 150

End With

Присвоенные значения параметров динамической формы, как элемента коллекции VBComponents, сохраняются при закрытии формы.

Для элемента коллекции UserForms присвоение значений свойств будет выглядеть следующим образом:

Dim myForm As Object, myFormForms As Object

‘Создаем форму как элемент коллекции VBComponents

Set myForm = ThisWorkbook.VBProject.VBComponents.Add(3)

‘На основе myForm создаем элемент коллекции UserForms

Set myFormForms = UserForms.Add(myForm.Name)

With myFormForms

    .Caption = «Эта форма создана программно»

    .Width = 300

    .Height = 150

    .Show

End With

Присвоенные значения параметров динамической формы, как элемента коллекции UserForms, не сохраняются при закрытии формы.

Я не рекомендую работать из кода VBA Excel с программно созданной формой, как элементом коллекции UserForms, кроме случая, когда необходимо отобразить динамическую форму на экране. В других случаях можно получить непредсказуемые результаты, например, могут не работать программно созданные кнопки, а также они будут исчезать при закрытии формы.

Отображение

Здесь возникает проблема: у динамической формы, созданной как элемент коллекции VBComponents, нет метода, который позволил бы ее отобразить на экране.

Чтобы обойти это препятствие, преобразуем нашу форму myForm в элемент коллекции UserForms, как в предыдущем примере, и выводим ее на экран с помощью метода Show:

‘извлекая имя из объектной переменной

UserForms.Add(myForm.Name).Show

‘или сразу по ранее присвоенному имени

UserForms.Add(«myForm1»).Show

Удаление

Удаление программно созданных форм, если это не однократное действие, крайне важно. Если этого не предусмотреть, то все вновь создаваемые формы будут сохраняться и накапливаться в проекте VBA.

Удаляем динамически созданную форму с именем myForm1 следующим образом:

With ThisWorkbook.VBProject.VBComponents

    .Remove .Item(«myForm1»)

End With

Программно удалить форму можно только через элемент коллекции VBComponents, так как у элемента коллекции UserForms удаление не предусмотрено (нет соответствующего метода).

Добавление кнопки на форму

Код VBA Excel, добавляющий командную кнопку на динамически созданную форму и задающий ее свойства:

Dim myButton As Control

Set myButton = myForm.Designer.Controls.Add(«Forms.CommandButton.1»)

With myButton

    .Name = «myCommandButton»

    .Caption = «Новая кнопка»

    .Font.Size = 10

    .Left = 100

    .Top = 80

    .Width = 100

    .Height = 20

End With

Здесь, при создании кнопки на основе элемента коллекции VBComponents, добавляется только объект Designer, которого нет при программном создании элементов управления на основе элемента коллекции UserForms (также смотрите пример кода ниже). Константы, указывающие на класс создаваемого элемента управления, используются те же.

Запись процедуры в модуль

В модуль динамически созданной формы myForm запишем код, который будет выполняться при клике по программно созданной в предыдущем примере кнопке myButton (объектная переменная) с именем «myCommandButton». Этот код создает на форме элемент управления Label, выравнивает его и записывает в него текст: «Ура! Новая кнопка работает!».

Текст процедуры

Обработка события Click для кнопки с именем «myCommandButton»:

Private Sub myCommandButton_Click()

Dim myLabel As Object

    Set myLabel = Me.Controls.Add(«Forms.Label.1»)

    With myLabel

        .Caption = «Ура! Новая кнопка работает!»

        .Font.Size = 10

        .Left = 85

        .Top = 30

        .Width = 200

        .Height = 20

    End With

End Sub

Способ 1

Первый способ предназначен для записи в модуль формы myForm кода процедуры целиком. Для этого используется метод AddFromString:

myForm.CodeModule.AddFromString («Private Sub myCommandButton_Click()» & vbNewLine & _

«Dim myLabel As Object» & vbNewLine & _

«Set myLabel = Me.Controls.Add(« & Chr(34) & «Forms.Label.1» & Chr(34) & «)» & vbNewLine & _

«With myLabel» & vbNewLine & _

«.Caption = « & Chr(34) & «Ура! Новая кнопка работает!» & Chr(34) & vbNewLine & _

«.Font.Size = 10» & vbNewLine & _

«.Left = 85» & vbNewLine & _

«.Top = 30» & vbNewLine & _

«.Width = 200» & vbNewLine & _

«.Height = 20» & vbNewLine & _

«End With» & vbNewLine & _

«End Sub»)

Все прямые кавычки из текста процедуры заменены на функцию Chr(34), где 34 – числовой код парной прямой кавычки.

Способ 2

Этот способ предполагает запись кода процедуры в модуль формы myForm построчно. Для этого используется метод InsertLines:

Dim n As Integer

With myForm.CodeModule

    n = .CountOfLines

    .InsertLines n + 1, «Private Sub myCommandButton_Click()»

    .InsertLines n + 2, «Dim myLabel As Object»

    .InsertLines n + 3, «Set myLabel = Me.Controls.Add(« & Chr(34) & «Forms.Label.1» & Chr(34) & «)»

    .InsertLines n + 4, «With myLabel»

    .InsertLines n + 5, «.Caption = « & Chr(34) & «Ура! Новая кнопка работает!» & Chr(34)

    .InsertLines n + 6, «.Font.Size = 10»

    .InsertLines n + 7, «.Left = 85»

    .InsertLines n + 8, «.Top = 30»

    .InsertLines n + 9, «.Width = 200»

    .InsertLines n + 10, «.Height = 20»

    .InsertLines n + 11, «End With»

    .InsertLines n + 12, «End Sub»

End With

Свойство модуля CountOfLines возвращает количество уже имеющихся в модуле строк, что позволяет с помощью переменной n добавлять новые строки ниже. Это актуально, если используется для записи кода уже существующий модуль, или новый модуль, в который записывается сразу несколько процедур.

Пример создания и удаления формы

Пример кода VBA Excel по динамическому созданию новой пользовательской формы, добавлению на нее командной кнопки и программного кода в ее модуль:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

Sub AddNewForm()

‘Создаем форму, как новый экземпляр коллекции VBComponents

Dim myForm As Object

Set myForm = ThisWorkbook.VBProject.VBComponents.Add(3)

‘Присваиваем значения свойствам формы myForm

With myForm

    .Properties(«Name») = «myForm1»

    .Properties(«Caption») = «Эта форма создана программно»

    .Properties(«Width») = 300

    .Properties(«Height») = 150

End With

‘Создаем командную кнопку

Dim myButton As Control

Set myButton = myForm.Designer.Controls.Add(«Forms.CommandButton.1»)

‘Присваиваем значения свойствам кнопки

With myButton

    .Name = «myCommandButton»

    .Caption = «Новая кнопка»

    .Font.Size = 10

    .Left = 100

    .Top = 80

    .Width = 100

    .Height = 20

End With

‘Записываем текст процедуры в модуль формы myForm

Dim n As Integer

With myForm.CodeModule

    n = .CountOfLines

    .InsertLines n + 1, «Private Sub myCommandButton_Click()»

    .InsertLines n + 2, «Dim myLabel As Object»

    .InsertLines n + 3, «Set myLabel = Me.Controls.Add(« & Chr(34) & «Forms.Label.1» & Chr(34) & «)»

    .InsertLines n + 4, «With myLabel»

    .InsertLines n + 5, «.Caption = « & Chr(34) & «Ура! Новая кнопка работает!» & Chr(34)

    .InsertLines n + 6, «.Font.Size = 10»

    .InsertLines n + 7, «.Left = 85»

    .InsertLines n + 8, «.Top = 30»

    .InsertLines n + 9, «.Width = 200»

    .InsertLines n + 10, «.Height = 20»

    .InsertLines n + 11, «End With»

    .InsertLines n + 12, «End Sub»

End With

‘Отображаем форму на экране

UserForms.Add(myForm.Name).Show

Set myForm = Nothing

End Sub

Пример удаления формы «myForm1», созданной процедурой «AddNewForm»:

Sub RemoveForm()

    With ThisWorkbook.VBProject.VBComponents

        .Remove .Item(«myForm1»)

    End With

End Sub

Вы можете скопировать этот код в стандартный модуль и проверить его работоспособность. После отображения динамически созданной пользовательской формы, нажмите кнопку «Новая кнопка». Результат работы кода:

Программно созданная пользовательская форма

Если хотите увидеть программно записанный код в модуле формы, кликните по форме правой кнопкой мыши и выберите в контекстном меню «View Code».

После удаления программно созданной формы, создать новую с тем же именем без перезагрузки Excel не получится. Без перезагрузки можно создавать любое количество динамических форм с разными именами.

Перезагрузка Excel – это закрытие всех открытых рабочих книг с последующим открытием любой книги.

Как скопировать пользовательскую форму из одной книги Excel в другую книгу с помощью кода VBA смотрите в статье Экспорт и импорт пользовательской формы.


При первой вставке модуля в VBA ему автоматически будет присвоено имя «Модуль1», А последующий модуль станет Module2, Module3 и т. Д. Аналогичным образом, когда вы вставляете пользовательскую форму, она будет называться UserForm1, UserForm2 и т. Д.

Переименование модуля

Чтобы переименовать модуль или форму, вам необходимо включить окно свойств в вашем VBE.

Если окна свойств не отображаются, нажмите F4 или перейдите в строку меню и выберите Вид, Характеристики Окно.

  1. Щелкните модуль, который хотите переименовать, в Обозреватель проекта.
  2. Выберите свойство name в Окно свойств (модуль будет иметь только это свойство; форма имеет несколько свойств)

3. Удалите имя модуля (в данном случае Module1) и введите имя, которое вы хотите назвать своим модулем.

4. Нажмите Enter, чтобы переименовать модуль.

Таким же образом вы переименовываете свои формы.

Удаление модуля

Иногда вам может потребоваться удалить модуль или форму, которые вам больше не нужны.

Щелкните правой кнопкой мыши модуль или форму, которые вы хотите удалить, чтобы отобразить контекстное меню, вызываемое правой кнопкой мыши.

Нажмите Удалять (в этом случае Модуль2)

ИЛИ

Нажать на Файл меню, а затем нажмите Удалите (Module2).

Появится окно с предупреждением, в котором вас спросят, хотите ли вы экспортировать модуль или форму, прежде чем удалять их. Экспорт модуля или формы позволяет сохранить его как отдельный файл для использования в другом проекте Excel в другое время.

Чаще всего, когда вы удаляете модуль или форму, это происходит потому, что он вам не нужен, поэтому нажмите Нет.

Именование модулей и форм

Рекомендуется переименовывать модули и формы, чтобы дать им более понятные имена. Например, если UserForm1 будет формой для ввода сведений о счете, мы можем переименовать ее в frmInvoices. Точно так же, если Module1 будет использоваться для хранения некоторых общих функций, которые будут повторно использоваться в вашем коде, вы можете переименовать его в basGeneral или modGeneral (в зависимости от того, какие соглашения об именах вы хотите использовать).

Рекомендуется соблюдать соглашения об именах как при именовании ваших модулей и форм, так и переменных, которые вы используете в своем коде. Вы заметите, что я написал первые 3 буквы имени модуля или формы в нижнем регистре и поставил заглавную букву в начале описания модуля или формы. Это известно как CamelCase (https://en.wikipedia.org/wiki/Camel_case) и является хорошей привычкой при именовании объектов. Я также использовал соглашение об именах Лешинского, которое часто используется программистами Visual Basic. (https://en.wikipedia.org/wiki/Leszynski_naming_convention).

Вы поможете развитию сайта, поделившись страницей с друзьями

When we make a UserForm, it takes data as input from users. But the data provided to the form does not close itself, so it can mislead the user to input data again. So, we use two different commands to close a userform when we give the input. They use the “Unload Me” method to close a UserForm, or we can use a UserForm.Hide method.

Table of contents
  • Excel VBA Close Userform
    • How to Close UserForm in Excel VBA?
      • #1 – Close Userform Using “Unload Me” Statement in VBA
      • #2 – Close UserForm Using Hide Method in Excel VBA
    • Difference Between Unload & Hide in Excel VBA
    • Recommended Articles

UserForms are vital while getting inputs from the user as part of the VBA project. We usually design the UserForm before we present it in front of the user. Once designing the VBA UserForm completes, we need to show up the same in front of the user and require VBA coding. Similarly, to close the UserForm requires VBA coding knowledge.

This article will show you how to close the UserForm in VBA coding.

VBA Close UserForm

How to Close UserForm in Excel VBA?

We must keep showing the UserForm in front of the user completing the purpose of the UserForm. So, we must close the UserForm. We can close the userform by using the “Unload Me” and “UserForm.Hide” statements. Even though both are slightly different, they will eventually serve our purpose.

You can download this VBA Close UserForm Excel Template here – VBA Close UserForm Excel Template

#1 – Close Userform Using “Unload Me” Statement in VBA

For example, look at the below image of the UserForm.

VBA Close UserForm Example 1

We have named the UserForm “MyUserForm.”

If we run the UserForm, we will see the UserForm like below.

VBA Close UserForm Example 1-1

We need to fill in the required details. Once we fill in the information, if we click on the “Submit” button, it will capture the same data to the worksheet, which is visible on the left side.

VBA Close UserForm Example 1-6

Clicking the “Submit” button captured the data we had entered in the UserForm.

If you notice, we have one more button called “Cancel.” What does this do?

Before we display the UserForm, we need to configure this button. So, we will go back to the basic visual editor to configure this button.

VBA Close UserForm Example 1-7

Now, we will double-click on the “Cancel” button. It will open up the automatic VBA subprocedureSUB in VBA is a procedure which contains all the code which automatically gives the statement of end sub and the middle portion is used for coding. Sub statement can be both public and private and the name of the subprocedure is mandatory in VBA.read more like the one below.

VBA Close UserForm Example 1-2

In this procedure, we need to write the VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more about what should happen if we click the “Cancel” button. When we click on this “Cancel” button, it should close the UserForm we are working on now.

So, write the code as “Unload Me.”

VBA Close UserForm Example 1-3

Code:

Private Sub CancelButton_Click()

   Unload Me

End Sub

“Unload Me” is the word we use to close the UserForm we are working on. Here the UserForm recognizes the word “Me” as the UserForm itself.

“Unload Me” can be used only on that UserForm procedure. We cannot call this statement in other modules. If called, it will show the error message as “Invalid use of Me Keyword.”

Let us run the code using the F5 key or manually now. First, we will see a blank UserForm.

VBA Close UserForm Example 1-8

Fill in the data and click on “Submit.”

VBA Close UserForm Example 1-4

Once we click the “Submit” button, it will store the values to the mentioned cells.

VBA Close UserForm Example 1-5

If the data entry is complete, we need to close the UserForm. Isn’t it?

So, click on the “Cancel” button to close the UserForm. It will close the UserForm.

#2 – Close UserForm Using Hide Method in Excel VBA

We can also close UserForm using the “Hide” method in VBA. Once again, we will double-click the “Cancel” button to see the private subprocedure.

VBA Close UserForm Example 1-3

Since we have already written the code to close the UserForm, we can see the existing code in VBA. So, now we will delete this.

We need to call the UserForm by its name to use the “Hide” method. In this case, our UserForm name is “MyUserForm.”

VBA CUF Example 1-9

After mentioning the UserForm by its name, if we put a dot (.), we can see all the properties and methods of this UserForm. Now, we will select the “Hide” method.

VBA CUF Example 2-2

Let us run the UserForm one more time. We will see a blank UserForm. Fill in the details first.

VBA CUF Example 2-3

Now, without a click on the “Submit” button, we will click the “Cancel” button, which will hide the UserForm.

Difference Between Unload & Hide in Excel VBA

It would help if you had a question about the difference between “Unload” and “Hide,” where both serve a similar purpose. There is a difference between these two. Now first, we will use the “Unload Me” statement. Look at the below image.

VBA CUF Example 3

We have entered the data in the user form but have not yet submitted it. Therefore, if we click on “Cancel,” it will unload the UserForm.

We will run the code through excel shortcut keyAn Excel shortcut is a technique of performing a manual task in a quicker way.read more F5 or manually. It will display a blank UserForm.

VBA CUF Example 3-1

Even though we had entered the data correctly by mistake, we clicked on the “Cancel” button. When the new UserForm appeared, we filled the data from scratch.

Now, we will use the “Hide” method.

VBA CUF Example 3-2

No, we will click on the “Cancel” button. It will hide the visible UserForm. But, when we re-run the macro, it will come back with the data we have already entered on the UserForm.

Like this,  we can use the “Unload” statement and “Hide” method to close the UserForm in Excel VBA.

Recommended Articles

This article has been a guide to VBA Close UserForm. Here, we learn how to close UserForm using the “Unload Me” statement and “Userform.Hide” method in Excel VBA with simple to advanced examples. Below are some useful Excel articles related to VBA: –

  • FileDialog in VBA
  • VBA InStr
  • Use of COUNTIF in VBA
  • Call Sub in VBA

Понравилась статья? Поделить с друзьями:
  • Excel vba как удалить строки по условию
  • Excel vba как удалить связи
  • Excel vba как удалить книгу
  • Excel vba как удалить диапазон строк
  • Excel vba как сравнить ячейки