Начало работы с Excel VBA UserForms
В этой статье вы узнаете основы пользовательских форм VBA. Я объясню, как создать форму в Excel, как использовать панель инструментов VBA, как обрабатывать вводимые пользователем данные и, наконец, как хранить вводимые пользователем данные. Мы рассмотрим эту тему на одном примере и пошаговом руководстве. Если вы читаете это, значит, я полагаю, вы знакомы с основами Excel VBA.
Без промедления, приступим.
Создайте форму для инвестиций в Excel и сохраните запись
Начнем с разработки пользовательской формы. В этой пользовательской форме у нас будет одно текстовое поле для имени, одно для возраста, одно для суммы инвестиций и пара переключателей для пола. Приступим.
Дизайн пользовательской формы
Откройте редактор Visual Basic в Excel с помощью сочетания клавиш ALT + F11. В Project Box щелкните правой кнопкой мыши VBAProject (ваш файл). В опции вставки выберите UserForm. Сразу же будет создана новая папка и ваша пользовательская форма найдет их. Все пользовательские формы для этого проекта будут добавлены в эту папку.
Измените имя формы на InvestmentForm в поле свойств *.
Добавление элементов в форму: На изображении выше я уже добавил элементы (метки, текстовое поле, командная кнопка). Однако новая форма пользователя полностью пуста. Для добавления элементов в форму необходимо использовать панель инструментов. Если вы не видите набор инструментов, откройте его на вкладке View *.
Элементы имени *: текстовое поле, метки, кнопки и т. Д. Являются элементами.
И чтобы использовать их в коде VBA, нам нужно дать им имена. Мы используем окно свойств, чтобы изменить их имя. Выберите элемент. Здесь я выбираю текстовое поле для имени. Перейдите в окно свойств и измените имя на «NameBox *». Сделайте то же самое для каждого элемента, который собираетесь использовать. (_ вам не нужно называть ярлыки, если вы не хотите, чтобы они были интерактивными. _)
Я переименовал элемент, как показано в таблице ниже, и буду использовать эти имена, чтобы ссылаться на них. У вас могут быть разные имена. Просто замените эти имена своим именем. Это имена VBA (кодовое имя), которые будут использоваться в коде. Они не будут отражены в форме.
Текст, который вы видите на этикетках и кнопках, называется «Подписи». Имя и заголовок элемента могут быть такими же, если хотите.
Element |
Rename |
Name Text Box |
NameBox |
Age Text Box |
AgeBox |
Male Option Button |
MaleOption |
Female Option Button |
FemaleOption |
Investment Text Box |
InvestBox |
Submit Command Button |
SubmitButton |
Cancel Command Button |
CancelButton |
Показать пользовательскую форму пользователю: Теперь форма готова, давайте покажем ее пользователю. Но подождите, как мне это сделать. На листе нет опции для вызова пользовательской формы. Собственно, пользовательской форме нужен триггер. Это невозможно показать само по себе. Вы можете использовать командную кнопку, подпрограмму или событие, чтобы форма всплывала на экране.
Здесь я собираюсь использовать командную кнопку для запуска пользовательской формы.
-
На листе перейти на вкладку разработчиков? Вставить? Кнопка (элемент управления формы).
Переименуйте его в открытую форму.
-
Щелкните правой кнопкой мыши по нему. Нажмите назначить макрос, а затем нажмите новый.
Подписка будет создана немедленно. Теперь добавьте эту строку к этой подпрограмме.
Sub Open_Form() 'Opening form InvestmentForm.Show End Sub
Сделано. Вернитесь к этому листу и нажмите кнопку. Появится форма пользователя.
Заполните лист с помощью пользовательской формы VBA: когда мы нажали кнопку команды (открытая форма), форма всплыла. Теперь вы можете заполнить форму. Но когда мы нажимаем кнопку отправки, данные должны были быть введены на этот лист, но ничего не происходит. Потому что мы не писали для этого никаких инструкций по vba. Нам нужно сохранить данные пользовательской формы в листе. Вернитесь в VBA и дважды щелкните кнопку «Отправить». Новая подписка будет создана автоматически. Эта подпрограмма встроена в форму, и вы не можете найти ее ни в одном модуле. То же самое для каждого элемента формы.
-
Напишите этот код vba в этой подпрограмме.
Private Sub SubmitButton_Click() Sheet1.Activate 'get first empty row on sheet (read about it here) lstrow = Cells(Rows.Count, 1).End(xlUp).Row Set firstEmptyRow = Range("A" & lstrow + 1) 'initialize each cell with data firstEmptyRow.Offset(0, 0).Value = nameBox.Value 'first cell firstEmptyRow.Offset(0, 1).Value = AgeBox.Value 'first cell to the right firstEmptyRow.Offset(0, 3).Value = InvestBox.Value 'third cell to the right 'checking radio button If MaleOption.Value = True Then firstEmptyRow.Offset(0, 2).Value = "Male" 'second cell to the right Else firstEmptyRow.Offset(0, 2).Value = "Female" 'second cell to the right End If 'Closing form Unload Me End Sub
Приведенный выше фрагмент кода VBA запускается при нажатии кнопки отправки. Он находит первую пустую строку на листе и заполняет ее значениями, указанными в форме. И в конце закрывает форму с помощью команды «Разгрузить меня».
Используйте команду Отмена, чтобы закрыть форму. Пока кнопка отмены бесполезна. Он ничего не делает. В случае, если вы хотите прервать ввод, вы можете использовать кнопку отмены. В этом случае: * Дважды щелкните кнопку отмены команды в редакторе VBA. Будет создана новая подписка. Просто напишите эту строку кода, чтобы закрыть пользовательскую форму.
Private Sub CancelButton_Click() 'Closing form Unload Me End Sub
Наконец, код формы будет выглядеть так.
И это все. Вот как вы используете пользовательскую форму excel vba для получения данных от пользователей. В этой статье мы только что изучили основы использования формы пользователя, чтобы вы с ней познакомились. Это просто, если вы знаете основы vba.
В следующих статьях мы рассмотрим более сложные функции пользовательских форм vba в Excel. Мы создадим пользовательскую форму в excel, чтобы делать гораздо больше.
Мы рассмотрим различные инструменты и элементы, доступные для пользовательской формы vba.
А пока практикуйте это. Вы можете скачать этот файл для справки, если хотите.
Так что да, ребята, это было небольшое и простое руководство по пользовательской форме. Надеюсь, он оказался находчивым. Дайте мне знать, если у вас есть какие-либо сомнения относительно этого, дайте мне знать в разделе комментариев ниже.
Похожие статьи
`link: / user-forms-input-box-in-vba-change-the-valuecontent-of-нескольких-userform-controls-using-vba-in-microsoft-excel [Изменить значение / содержимое нескольких элементов управления UserForm с использованием VBA в Excel] `
`link: / user-forms-input-box-in-vba-prevent-a-userform-from-closed-when-the-user-clicks-the-x-button-using-vba-in-microsoft-excel [ Предотвратить закрытие пользовательской формы, когда пользователь нажимает кнопку x, используя VBA в Excel] `
`link: / user-forms-input-box-in-vba-return-a-userdefined-cell-reference-from-a-dialog-using-vba-in-microsoft-excel [Вернуть ячейки, на которые ссылается пользователь, используя RefEdit управление пользовательской формой в Excel] `
Популярные статьи:
link: / формулы-и-функции-введение-функции vlookup [Функция ВПР в Excel]
link: / tips-countif-in-microsoft-excel [СЧЁТЕСЛИ в Excel 2016]
link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel]