Элемент управления пользовательской формы TextBox в VBA Excel. Использование текстового поля для ввода и вывода информации, основные свойства, примеры. Привязка текстового поля к ячейке.
UserForm.TextBox – это элемент управления пользовательской формы, предназначенный для ввода, редактирования и вывода информации в текстовом формате.
Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.
Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.
Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.
Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.
Свойства текстового поля
Свойство | Описание |
---|---|
AutoSize* | Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height. |
AutoTab | Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена. |
ControlSource | Ссылка на источник данных для поля TextBox. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на TextBox. |
Enabled | Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым). |
Font | Шрифт, начертание и размер текста в поле. |
Height | Высота текстового поля. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля. |
Locked | Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены. |
MaxLenght | Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет. |
Multiline | Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста. |
PasswordChar | Задает символ, который будет отображаться при вводе знаков пароля. |
TabIndex | Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0. |
Text** | Текстовое содержимое (значение) поля (=Value). |
TextAlign | Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля. |
Value** | Текстовое содержимое (значение) поля (=Text). |
Visible | Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт. |
Width | Ширина текстового поля. |
WordWrap | Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен. |
* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.
В таблице перечислены только основные, часто используемые свойства текстового поля. Все доступные свойства отображены в окне Properties элемента управления TextBox.
Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.
Привязка текстового поля к ячейке
Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.
1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:
2. Присвоить свойству ControlSource адрес ячейки в коде VBA Excel:
UserForm1.TextBox1.ControlSource = «C5» |
Теперь ячейка C5 активного листа будет привязана к элементу управления TextBox1. При открытии формы текстовое поле будет заполнено значением ячейки C5.
Чтобы наглядно ознакомиться с взаимозависимостью значения ячейки C5 и содержимого текстового поля, разместите на пользовательской форме еще какой-нибудь элемент управления и откройте ее в немодальном* окне:
Sub Test() UserForm1.TextBox1.ControlSource = «C5» UserForm1.Show 0 End Sub |
Измените значение ячейки C5 и нажмите клавишу «Tab» или «Enter» – изменения будут продублированы в текстовом поле на форме. Измените содержимое поля TextBox1, нажмите клавишу «Tab» или «Enter», передав фокус другому элементу управления, – изменения продублируются в ячейке C5.
Чтобы привязать текстовое поле к ячейке неактивного листа, необходимо в адресе указать имя листа по ярлыку с разделителем «!»:
UserForm1.TextBox1.ControlSource = «Лист2!A3» |
Если имя листа содержит пробел, заключите его в одинарные кавычки:
UserForm1.TextBox1.ControlSource = «‘Мой лист’!B6» |
Точно также адрес ячейки конкретного листа можно указать непосредственно в окне Properties элемента управления TextBox в поле свойства ControlSource (без парных кавычек).
* Отображение пользовательской формы в немодальном окне позволяет редактировать ячейки на рабочем листе Excel, не закрывая форму.
Примеры использования TextBox
Пример 1
Обмен содержимым между текстовым полем, переменной и ячейкой на рабочем листе:
‘Присвоение текстовому полю значения ‘ячейки A2 и переменной a1 UserForm1.TextBox1.Text = Range(«A2») UserForm1.TextBox1.Text = a1 ‘Присвоение ячейке B3 и переменной a2 ‘значения текстового поля Cells(3, 2) = UserForm1.TextBox1.Text a2 = UserForm1.TextBox1.Value ‘Свойства Text и Value элемента ‘управления TextBox равнозначны |
Пример 2
Программное создание элемента управления TextBox, размещение его по центру пользовательской формы, добавление всплывающей подсказки и текста по умолчанию.
Предположим, что текстовое поле предназначено для ввода даты, поэтому добавляем соответствующую подсказку, а в качестве текста по умолчанию – текущую дату.
Создаем новую пользовательскую форму с именем UserForm2. Если у вас другое имя формы, это не имеет значения, так как обращаться к ней будем с помощью ключевого слова «Me». Открываем модуль созданной формы и вставляем в него следующий код 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 |
Private Sub UserForm_Initialize() Dim myTextBox As Control ‘Создаем новый TextBox и присваиваем его переменной Set myTextBox = Me.Controls.Add(«Forms.TextBox.1») ‘Задаем размеры и заголовок пользовательской формы With Me .Height = 100 .Width = 220 .Caption = «Форма №2» End With ‘Присваиваем значения свойствам текстового поля With myTextBox .Width = 100 .Height = 20 ‘Left и Top рассчитаны для Excel 2016* .Left = 60 — 5 .Top = 40 — 15 ‘Добавляем всплывающую подсказку .ControlTipText = «Введите дату подписания договора» ‘Вставляем в поле текущую дату .Text = Format(Now, «DD.MM.YYYY») ‘Выравниваем текст по центру .TextAlign = 2 End With End Sub |
В результате выполнения кода откроется следующая форма с всплывающей подсказкой при наведении на TextBox курсора:
* Значения свойств Left и Top рассчитаны для Excel 2016. Вычитаемые числа зависят от толщины границ пользовательской формы, которые в других версиях Excel могут отличаться.
Содержание
- VBA TextBox — Примеры для создания TextBox в Excel VBA (шаблон Excel)
- Что такое VBA TextBox в Excel?
- Примеры Excel VBA TextBox
- Пример № 1 — Как вставить TextBox в VBA?
- Пример №2 — Установка значения в VBA TextBox
- Пример # 3 — Ограничить ввод TextBox, чтобы принимать только числовые значения
- То, что нужно запомнить
- Рекомендуемые статьи
- VBA TextBox
- Excel VBA TextBox
- How to Insert TextBox in VBA UserForm?
- TextBox Properties
- Example of using TextBox in Userform
- Recommended Articles
VBA TextBox — Примеры для создания TextBox в Excel VBA (шаблон Excel)
Что такое VBA TextBox в Excel?
VBA TextBox является одним из многих элементов управления из элементов управления UserForm в Excel. VBA TextBox может пригодиться, если вы хотите, чтобы пользователь вводил данные, такие как его имя, возраст, адрес, зарплата и т. Д. Используя элемент управления TextBox, вы можете позволить пользователям вводить такую информацию и сэкономить много времени, а также опечатки., VBA TextBox может состоять из статических или динамических данных.
UserForm сам по себе является очень полезным инструментом, который имеет различные параметры управления, такие как TextBox, MsgBox, InputBox и т. Д., Которые предоставляют более практичный способ получения данных от пользователя, чтобы вы могли функционально обрабатывать эти данные и находить из них некоторые полезные идеи.,
В этой статье вы получите практический опыт работы с Excel VBA TextBox.
Примеры Excel VBA TextBox
Ниже приведены различные примеры VBA TextBox в Excel.
Вы можете скачать этот шаблон Excel для VBA TextBox здесь — Шаблон Excel для VBA TextBox
Пример № 1 — Как вставить TextBox в VBA?
Ниже приведены шаги для вставки TextBox в Excel VBA.
Шаг 1: Откройте файл Excel и нажмите Alt + F11, чтобы перейти на панель VBA.
Шаг 2: Как мы уже обсуждали, TextBox — это опция, доступная в пользовательской форме. Поэтому нам нужно вставить UserForm в VBE. Перейдите в меню «Вставка» > нажмите «Пользовательская форма» .
Шаг 3: Как только вы вставляете пользовательскую форму в VBA, вы можете видеть параметр Toolbox, связанный с ним, и иметь различные параметры, связанные с UserForm.
Шаг 4: В этом наборе инструментов выберите TextBox .
Шаг 5: Перетащите этот TextBox на форму пользователя.
Шаг 6: Нажмите F4, чтобы увидеть свойства пользовательской формы (в качестве альтернативы вы можете сделать это, щелкнув правой кнопкой мыши на вставленной пользовательской форме). Эти свойства позволяют вам внести некоторые необходимые изменения, такие как изменение имени пользовательской формы, чтобы иметь возможность легко получить к нему доступ.
Некоторые другие основные изменения, которые вы можете сделать в панели свойств UserForm, такие как изменение шрифта, изменение размера и т. Д.
Шаг 7: Введите текст « Добро пожаловать в VBA TextBox! В TextBox под UserForm.
Вот как вы можете создать VBA TextBox.
Пример №2 — Установка значения в VBA TextBox
Давайте посмотрим, как мы можем установить значения для TextBox. Иногда бывает необходимо установить значения в противном случае, пользователь будет вводить все, что его интересует.
Шаг 1: Вставьте новую пользовательскую форму в VBE. Перейдите в меню « Вставка» > нажмите «Пользовательская форма».
Шаг 2: Из UserForm Tools выберите TextBox и перетащите его в UserForm.
Шаг 3: Вставьте CommandButton под UserForm так же, как вы добавили TextBox.
Шаг 4: Измените заголовок командной кнопки на « Отправить » в свойствах. Вы можете перейти к свойствам командной кнопки, щелкнув правой кнопкой мыши Command Button> Click Properties .
Шаг 5: Дважды щелкните по кнопке отправки или щелкните правой кнопкой мыши и выберите « Просмотреть код» .
Шаг 6: В коде вставьте строку нового кода в подпроцедуру, как показано ниже.
Код:
Этот выделенный код позволяет назначать значение справа, заключенное в двойные кавычки, в TextBox. Вы также можете использовать свойство TextBox.Text вместо TextBox.Values, чтобы установить значение для TextBox.
Шаг 7: Нажмите F5 или кнопку Run под VBE, чтобы запустить этот код, вы увидите пользовательскую форму с пустым TextBox. Как только вы нажмете кнопку отправки, там появится текст, назначенный для TextBox.
Пример # 3 — Ограничить ввод TextBox, чтобы принимать только числовые значения
Выполните следующие шаги:
Шаг 1: Вставьте новую пользовательскую форму в VBA и добавьте в нее TextBox.
Шаг 2: Измените имя TextBox в разделе «Свойства» на « My_Age ».
Шаг 3: Дважды щелкните TextBox или щелкните его правой кнопкой мыши и выберите View Code .
Вы сможете увидеть начальную подпроцедуру, как показано ниже:
Код:
Шаг 4: Теперь попробуйте добавить условие If, которое начинается с If Not.
Код:
Шаг 5: Попросите компилятор проверить, является ли значение TextBox «My_Age» числовым или не использует IsNumeric Keyword перед условием «Если не».
Код:
Шаг 6: Когда каждое условие IF запрашивает, добавьте ключевое слово Then для него.
Код:
В этом фрагменте кода вы просите компилятор проверить, является ли значение, введенное пользователем в TextBox, числовым или нет. Если это не цифра, то что делать? Следуйте следующему шагу.
Шаг 7: С помощью MsgBox добавьте комментарий типа «Извините! Разрешены только цифры. », Если значение в TextBox не является числовым.
Код:
Шаг 8: Теперь закройте этот оператор IF, используя ключевое слово End IF.
Код:
Шаг 9: Теперь запустите этот код, нажав кнопку F5 на клавиатуре или кнопку Run из VBE, и просмотрите результат. Вы получите TextBox, как показано ниже:
Теперь я пытаюсь ввести в него целочисленное значение и посмотреть, позволяет ли оно мне вводить то же самое или нет.
Бинго, это позволяет мне хранить целочисленное значение.
Теперь давайте попробуем добавить некоторое число с плавающей точкой (значение с десятичными точками) в это текстовое поле и посмотрим, позволяет ли оно нам вводить то же самое.
Давайте проверим, позволяет ли это текстовое поле хранить некоторые отрицательные значения под ним или нет. Я наберу некоторое отрицательное число и проверю.
Что ж! Что ж!! Ну, это, я стреляю в сообщение о том, что разрешены только цифры Это произошло потому, что этот код, изначально написанный с условием IF, не имеет обходного пути, что делать, если число не положительное. Более того, возраст не может быть отрицательным. Правильно? Поэтому я получаю предупреждающее сообщение, как вы можете видеть выше. Однако, если вы нажмете OK в окне сообщения и попытаетесь ввести номер, это позволит вам сделать это. Но я не буду рекомендовать нарушать правила там.
Наконец, давайте попробуем некоторую текстовую строку в поле и посмотрим, позволяет ли она хранить то же самое в текстовом поле или нет.
Как и ожидалось, как только я ввел первую строковую букву, система помешала мне сделать это, бросив сообщение. Это связано с тем, что мы упомянули в нашем коде условие о том, что если значение не является числовым, отправьте пользователю сообщение о том, что допускаются только числовые значения.
То, что нужно запомнить
- VBA TextBox — это специальная опция в пользовательской форме. Который предназначен для ввода данных от самого пользователя.
- Есть два способа установить значения для TextBox: с помощью TextBox.Text и с помощью TextBox.Value.
- Иногда необходимо ограничить ввод данных пользователем, чтобы мы получали правильный тип данных.
Рекомендуемые статьи
Это руководство по VBA TextBox. Здесь мы обсудим, как создать TextBox в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Как использовать функцию VBA IsNumeric?
- Создание поля со списком в Excel
- Вставьте флажок в Excel
- Функция VBA UCASE в Excel
- Как закрыть UserForm в VBA?
Источник
VBA TextBox
Excel VBA TextBox
A TextBox is simply a box used to get input from a user. Text boxes are a part of UserForms. For example, in the Developer tab in any Excel worksheet, if we want to make text boxes in a UserForm, we can select the textbox option from user form controls in VBA, or in the worksheet, we can select it from the Design tab.
VBA TextBox is one of the many controls of the UserForm. By displaying the text box on the UserForm, we can ask them to enter the data into the text box. Furthermore, it can store the data entered by the user on the worksheet with simple codes.
Userforms are very attractive in VBA coding VBA Coding 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 . It helps us immensely, especially when we need input from the users. With UserForms, we have many controls. For example, to get the input value from the users, “Text Box” is the ideal option in a UserForm. By putting a text box on the UserForm, we can tell the user to enter the required value in the text box we display. If you have no idea about VBA text boxes, this article will take a tour of VBA text boxes.
Table of contents
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 TextBox (wallstreetmojo.com)
How to Insert TextBox in VBA UserForm?
To insert a text box first, we need to insert a UserForm. To insert the UserForm, go to Insert > UserForm.
As soon as you click on UserForm, we will use UserForm just like another module.
Click on UserForm to see the controls of the UserForm.
From this “Controls” toolbox, select “TextBox” and drag on the UserForm.
With this, we can see many properties associated with this text box.
TextBox Properties
Press the F4 key to see the properties of the TextBox.
As we can see, the text box has a name, color, and border like this many. Now, give a proper name to refer to this text box while coding easily.
Example of using TextBox in Userform
Step 1: On the UserForm, draw the label.
Step 2: Change the default text of the label to “Employee Name.”
Step 3: In front of the label, draw a text box.
Step 4: Give a proper name to the text box as “EmpNameTextBox.”
Step 5: Draw one more label below the first label and enter the text as “Employee ID.”
Step 6: In front of the second label, draw one more text box and name it “EmpIDTextBox.”
Step 7: Draw one more label and enter the text as “Salary.”
Step 8: Draw one more text box in front of the “Salary” label and name it “SalaryTextBox.”
Step 9: Insert the “Command Button” from the ToolBox.
Step 10: Change the text of the command button to “Submit.”
We have completed the UserForm design part. Next, we need to write the code to store the data entered in this UserForm. As of now, run the UserForm by pressing the F5 key. We should see a UserForm like this.
Step 11: Change the caption of the UserForm in the “Properties” window.
Step 12: Now, double-click on the “Submit” command button. As soon as you double-click, you will see this auto-sub procedure like the one below.
What should happen when you click on the “Submit” button? First, we need to mention the tasks in the VBA code. In this project, we aim to store the data entered in the text box as soon as we click the “Submit” button.
For this, first, create a template like this in the worksheet named “Employees Sheet.”
Code:
Step 14: First, we will store “Employee Name” in the first column. So for this, we need to access the text box named “EmpNameTextBox.”
Code:
Step 15: We need to store the “Employee ID” in the second column. So, we may obtain this by accessing the text box “EmpIDTextBox.”
Code:
Step 16: At last, we need to store the salary part. For this, we need to access a text box named “SalaryTextBox.”
Code:
We have completed the coding part as well. Now, run the code using the F5 key. We should see a UserForm like the one below.
As of now, all the boxes are empty.
Fill in the details first.
Now, click on the “Submit” button. It will store the data on the worksheet.
Like this, you can keep entering the data and press the “Submit” button. It is a simple data entry UserForm with a text box.
Recommended Articles
This article has been a guide to VBA TextBox. Here, we learn how to insert and use textbox control in UserForm through Excel VBA, practical examples, and a downloadable template. Below you can find some useful Excel VBA articles: –
Источник
Хитрости »
5 Май 2011 115244 просмотров
Очень часто при работе с формами(UserForm) приходится заполнять значениями КомбоБоксы(ComboBox) и ТекстБоксы(TextBox). Иногда однотипными данными. Или очистить их все после выполнения какого-либо действия. А может проверить, все ли элементы заполнены, прежде чем продолжать действие. Если КомбоБоксов/ТекстБоксов пару штучек — не проблема
TextBox1 = "" TextBox2 = ""
и всех делов. А если их порядка двадцати? Или больше? Мало того, что писать это все долго, так еще и код растягивается, как портянка. Но это можно сделать гораздо проще и удобнее. Воспользоваться можно несколькими способами. Этот способ наиболее популярен, если необходимо произвести однотипные действия со всеми ТекстБоксами на форме:
Sub All_TextBoxes() Dim oControl As Control For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.TextBox Then oControl.Value = "" End If Next oControl End Sub
В примере элементы формы очищаются, но в код можно подставить любое действие — добавление нового элемента списка(для ComboBox), поменять представление данных в TextBox, проверить наличие данных в проверяемом элементе и т.д. Тут уж зависит от поставленной задачи. Конечно, подобным способом можно проделать разные действия и с остальными элементами формы. Только надо будет заменить тип для проверки элементов:
ComboBox - MSForms.ComboBox CheckBox - MSForms.CheckBox CommandButton - MSForms.CommandButton Frame - MSForms.Frame Image - MSForms.Image Label - MSForms.Label ListBox - MSForms.ListBox MultiPage - MSForms.MultiPage SpinButton - MSForms.SpinButton TabStrip - MSForms.TabStrip ToggleButton - MSForms.ToggleButton
Это не единственный способ проделывания однотипных действий с элементами формы. Код ниже использует имена элементов для обращения к ним:
Sub All_TextBoxes() Dim li As Long For li = 1 To 10 UserForm1.Controls("TextBox" & li).Value = li Next li End Sub
Недостаток данного метода: имена элементов должны строго соответствовать используемым в коде и лишь нумерация на конце имени должна различаться. За нумерацию отвечает переменная li и, конечно, цикл, в котором задается начальное и конечные значения. В примере ТекстБоксам с именами от «TextBox1» до «TextBox10» будут подставлены значения номеров самих ТекстБоксов. Но такой недостаток может быть очень полезным. Например, если необходимо проделать действия не над всеми ТекстБоксами, а лишь над некоторыми из них. Тогда все, что необходимо дать ТекстБоксам определенные имена с нумерацией(«ToDB1″,»ToDB2» и т.д.) и в зависимости от имени можно проделывать различные действия: стирать значения, менять свойства элементов и т.д.
И есть еще один плюс такого подхода: когда необходимо заполнить значения ТекстБоксов значениями ячеек. Скажем надо заполнить 10 ТекстБоксов(с именами TextBox1, TextBox2, TextBox3 и т.д.) из ячеек диапазона A2:A11 листа с именем «Лист2″(т.е. из 10 ячеек, начиная с ячейки A2). Код будет выглядеть так:
Sub Fill_TextBoxes_FromCells() Dim li As Long For li = 1 To 10 UserForm1.Controls("TextBox" & li).Value = Sheets("Лист2").Range("A" & li).Value 'или применить Cells вместо Range 'UserForm1.Controls("TextBox" & li).Value = Sheets("Лист2").Cells(li, 1).Value Next li End Sub
Подробнее про обращение к диапазонам из VBA можно узнать из этой статьи: Как обратиться к диапазону из VBA
Скачать пример
Tips_Macro_WorkWithGroupControls.xls (51,5 KiB, 4 052 скачиваний)
P.S. Небольшое дополнение: нужные элементы можно просто помещать внутрь объекта Frame. Тогда можно будет применять цикл исключительно по элементам внутри этого Frame(предположим, что Frame называется Frame1):
Sub All_TextBoxes_InFrame() Dim oControl As Control For Each oControl In Frame1.Controls If TypeOf oControl Is MSForms.TextBox Then oControl.Value = "" End If Next oControl End Sub
Кстати говоря, примерно так же можно перебрать элементы ActiveX не на форме, а на листе(вставляются на лист через вкладку Разработчик(Developer) —Вставить(Insert) —Элементы ActiveX(ActiveX Controls)). Например, снимем флажки со всех CheckBox-ов:
Sub Off_ActiveXCheckBoxes() Dim oControl 'цикл по всем объектам на листе For Each oControl In ActiveSheet.DrawingObjects 'определяем тип объекта - должен быть OLEObject(так определяется ActiveX) If TypeName(oControl) = "OLEObject" Then 'необходимо дополнительно проверить тип элемента If TypeOf oControl.Object Is MSForms.CheckBox Then oControl.Object.Value = 0 End If End If Next oControl End Sub
Для этих элементов на листе в строке TypeOf oControl.Object Is MSForms.CheckBox для проверки типа(MSForms.CheckBox) используются те же значения, что и для контролов на форме. Перечень приведен выше.
Но помимо ActiveX(к слову устаревших и не рекомендованных к использованию) на листе могут быть и другие, более новые флажки — элементы форм(вставляются на лист через вкладку Разработчик(Developer) —Вставить(Insert) —Элементы управления формы(Form Controls)). К ним подход уже другой:
Sub Off_ShapeCheckBoxes() Dim oControl 'цикл по всем объектам на листе For Each oControl In ActiveSheet.DrawingObjects 'определяем тип объекта - если это Элемент форм, то будет указание на конкретный тип If TypeName(oControl) = "CheckBox" Then oControl.Value = 0 End If Next oControl End Sub
В данном случае для определения конкретного типа контрола используется TypeName. В коде выше нам нужны CheckBox-ы и на них и проверяем. А вот список основных элементов форм, которые доступны по умолчанию для всех версий для вставки на лист:
Button — кнопка
DropDown — поле со списком
CheckBox — флажок
Spinner — счетчик
ListBox — список
OptionButton — радиокнопка
GroupBox — группа(рамка)
Label — надпись
ScrollBar — полоса прокрутки
Если совместить, то можно снять флажки со всех checkBox-ов — и ActiveX и Элементов форм:
Sub Off_AllCheckBoxes() Dim oControl 'цикл по всем объектам на листе For Each oControl In ActiveSheet.DrawingObjects 'определяем тип флажка: ActiveX или Элемент форм Select Case TypeName(oControl) Case "OLEObject" 'ActiveX - необходимо дополнительно проверить тип элемента If TypeOf oControl.Object Is MSForms.CheckBox Then oControl.Object.Value = 0 End If Case "CheckBox" 'Элемент форм CheckBox oControl.Value = 0 End Select Next oControl End Sub
В итоге, определяя конкретный тип элемента можно производить над ним нужные действия.
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Добрый вечер!
ЛистБокс как раз для этого и нужен.. А если лейблом, то типа так….
[vba]
Код
Option Explicit
Dim str as string
Dim cellStart as ange
Dim cellEnd as ange
Dim rng as Range
Dim cell as Range
With ThisWorkbook.Sheet(1)
Set cellStart = .Cells(1,1)
Set cellEnd = .Cells(.Rows.Count,1).end(xlup)
Set rng = .Range(cellStart, CellEnd)
End With
For each cell in rng
str = str & cell.Value & chr(10)
Next cell
UserForm1.Label1.Caption = str
[/vba]
но это как-то через жжжж
Прокруток в Лэбле и ТекстБоксе я не знаю… хотя, если великие мастера вкурсе… я б с радостью узнал про такой функционал в VBA!
Да и рекомендую почитать сколько в Лейбл можно записать букав…. вот точно не мульйон!
Юзайте ЛистБокс — и прокрутка и в дальнейшем расширить функционал, тем более, что ЛистБоксе есть возможность выбрать RowSource
Файл в студию!
Уважаемые, помогите, пожалуйста, решить такую задачу: есть userform, среди элементов присутствуют несколько textbox`ов, которые заполняются через специальную форму ввода (кликаешь на textbox — выскакивает форма ввода, ее заполняешь, жмешь на ОК, значения нужным образом компилируются и попадают в textbox на исходной форме). Форма ввода одна на несколько textbox`ов, все textbox`ы могут быть заполнены в произвольном порядке. |
|
прописывать на событие Click по конкретному TextBox вызов формы и передачу заполненного значения в конкретный TextBox |
|
nerv Пользователь Сообщений: 3071 |
>>как сделать, чтобы при вызове формы ввода по клику на textbox…значение формы ввода попадало именно в textbox, по которому кликнули? Чаво?) Я так полагаю, у вас одни текст боксы на листе, а другие на форме ввода. Private Function CommandButton_TextBox1_Click() как-то так… |
{quote}{login=}{date=30.08.2011 09:52}{thema=}{post}прописывать на событие Click по конкретному TextBox вызов формы и передачу заполненного значения в конкретный TextBox{/post}{/quote} Вот именно как это сделать меня и интересует. Прикладываю файл. P.S. Да, прошу прощения — запуск формы ввода не по клику на текстбокс, а по клику на соответствующий label. |
|
Прошу прошещиния — в предыдущем посте выложила промежуточный файл. Исправляюсь. |
|
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#6 30.08.2011 10:33:38 В модуль1 нужное Вам событие в 1 форме Private Sub TextBox4_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) и такое событие во второй форме Private Sub CommandButton1_Click()
|
|
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#7 30.08.2011 10:49:38 можно конечно использовать
|
|
Black__Hole Пользователь Сообщений: 259 |
#8 30.08.2011 10:53:38 Спасибо, то что надо! |
- Что такое VBA TextBox в Excel?
Что такое VBA TextBox в Excel?
VBA TextBox является одним из многих элементов управления из элементов управления UserForm в Excel. VBA TextBox может пригодиться, если вы хотите, чтобы пользователь вводил данные, такие как его имя, возраст, адрес, зарплата и т. Д. Используя элемент управления TextBox, вы можете позволить пользователям вводить такую информацию и сэкономить много времени, а также опечатки., VBA TextBox может состоять из статических или динамических данных.
UserForm сам по себе является очень полезным инструментом, который имеет различные параметры управления, такие как TextBox, MsgBox, InputBox и т. Д., Которые предоставляют более практичный способ получения данных от пользователя, чтобы вы могли функционально обрабатывать эти данные и находить из них некоторые полезные идеи.,
В этой статье вы получите практический опыт работы с Excel VBA TextBox.
Примеры Excel VBA TextBox
Ниже приведены различные примеры VBA TextBox в Excel.
Вы можете скачать этот шаблон Excel для VBA TextBox здесь — Шаблон Excel для VBA TextBox
Пример № 1 — Как вставить TextBox в VBA?
Ниже приведены шаги для вставки TextBox в Excel VBA.
Шаг 1: Откройте файл Excel и нажмите Alt + F11, чтобы перейти на панель VBA.
Шаг 2: Как мы уже обсуждали, TextBox — это опция, доступная в пользовательской форме. Поэтому нам нужно вставить UserForm в VBE. Перейдите в меню «Вставка» > нажмите «Пользовательская форма» .
Шаг 3: Как только вы вставляете пользовательскую форму в VBA, вы можете видеть параметр Toolbox, связанный с ним, и иметь различные параметры, связанные с UserForm.
Шаг 4: В этом наборе инструментов выберите TextBox .
Шаг 5: Перетащите этот TextBox на форму пользователя.
Шаг 6: Нажмите F4, чтобы увидеть свойства пользовательской формы (в качестве альтернативы вы можете сделать это, щелкнув правой кнопкой мыши на вставленной пользовательской форме). Эти свойства позволяют вам внести некоторые необходимые изменения, такие как изменение имени пользовательской формы, чтобы иметь возможность легко получить к нему доступ.
Некоторые другие основные изменения, которые вы можете сделать в панели свойств UserForm, такие как изменение шрифта, изменение размера и т. Д.
Шаг 7: Введите текст « Добро пожаловать в VBA TextBox! В TextBox под UserForm.
Вот как вы можете создать VBA TextBox.
Пример №2 — Установка значения в VBA TextBox
Давайте посмотрим, как мы можем установить значения для TextBox. Иногда бывает необходимо установить значения в противном случае, пользователь будет вводить все, что его интересует.
Шаг 1: Вставьте новую пользовательскую форму в VBE. Перейдите в меню « Вставка» > нажмите «Пользовательская форма».
Шаг 2: Из UserForm Tools выберите TextBox и перетащите его в UserForm.
Шаг 3: Вставьте CommandButton под UserForm так же, как вы добавили TextBox.
Шаг 4: Измените заголовок командной кнопки на « Отправить » в свойствах. Вы можете перейти к свойствам командной кнопки, щелкнув правой кнопкой мыши Command Button> Click Properties .
Шаг 5: Дважды щелкните по кнопке отправки или щелкните правой кнопкой мыши и выберите « Просмотреть код» .
Шаг 6: В коде вставьте строку нового кода в подпроцедуру, как показано ниже.
Код:
Private Sub CommandButton1_Click () TextBox1.Value = "Меня зовут Лалит!" End Sub
Этот выделенный код позволяет назначать значение справа, заключенное в двойные кавычки, в TextBox. Вы также можете использовать свойство TextBox.Text вместо TextBox.Values, чтобы установить значение для TextBox.
Шаг 7: Нажмите F5 или кнопку Run под VBE, чтобы запустить этот код, вы увидите пользовательскую форму с пустым TextBox. Как только вы нажмете кнопку отправки, там появится текст, назначенный для TextBox.
Пример # 3 — Ограничить ввод TextBox, чтобы принимать только числовые значения
Выполните следующие шаги:
Шаг 1: Вставьте новую пользовательскую форму в VBA и добавьте в нее TextBox.
Шаг 2: Измените имя TextBox в разделе «Свойства» на « My_Age ».
Шаг 3: Дважды щелкните TextBox или щелкните его правой кнопкой мыши и выберите View Code .
Вы сможете увидеть начальную подпроцедуру, как показано ниже:
Код:
Private Sub My_Age_Change () End Sub
Шаг 4: Теперь попробуйте добавить условие If, которое начинается с If Not.
Код:
Private Sub My_Age_Change () Если не End Sub
Шаг 5: Попросите компилятор проверить, является ли значение TextBox «My_Age» числовым или не использует IsNumeric Keyword перед условием «Если не».
Код:
Private Sub My_Age_Change () Если не IsNumeric (My_Age.Value) End Sub
Шаг 6: Когда каждое условие IF запрашивает, добавьте ключевое слово Then для него.
Код:
Private Sub My_Age_Change () Если не IsNumeric (My_Age.Value), то End Sub
В этом фрагменте кода вы просите компилятор проверить, является ли значение, введенное пользователем в TextBox, числовым или нет. Если это не цифра, то что делать? Следуйте следующему шагу.
Шаг 7: С помощью MsgBox добавьте комментарий типа «Извините! Разрешены только цифры. », Если значение в TextBox не является числовым.
Код:
Private Sub My_Age_Change () Если не IsNumeric (My_Age.Value), то MsgBox "Извините! Разрешены только номера." End Sub
Шаг 8: Теперь закройте этот оператор IF, используя ключевое слово End IF.
Код:
Private Sub My_Age_Change () Если не IsNumeric (My_Age.Value), то MsgBox "Извините! Разрешены только номера." End If End Sub
Шаг 9: Теперь запустите этот код, нажав кнопку F5 на клавиатуре или кнопку Run из VBE, и просмотрите результат. Вы получите TextBox, как показано ниже:
Теперь я пытаюсь ввести в него целочисленное значение и посмотреть, позволяет ли оно мне вводить то же самое или нет.
Бинго, это позволяет мне хранить целочисленное значение.
Теперь давайте попробуем добавить некоторое число с плавающей точкой (значение с десятичными точками) в это текстовое поле и посмотрим, позволяет ли оно нам вводить то же самое.
Давайте проверим, позволяет ли это текстовое поле хранить некоторые отрицательные значения под ним или нет. Я наберу некоторое отрицательное число и проверю.
Что ж! Что ж!! Ну, это, я стреляю в сообщение о том, что разрешены только цифры Это произошло потому, что этот код, изначально написанный с условием IF, не имеет обходного пути, что делать, если число не положительное. Более того, возраст не может быть отрицательным. Правильно? Поэтому я получаю предупреждающее сообщение, как вы можете видеть выше. Однако, если вы нажмете OK в окне сообщения и попытаетесь ввести номер, это позволит вам сделать это. Но я не буду рекомендовать нарушать правила там.
Наконец, давайте попробуем некоторую текстовую строку в поле и посмотрим, позволяет ли она хранить то же самое в текстовом поле или нет.
Как и ожидалось, как только я ввел первую строковую букву, система помешала мне сделать это, бросив сообщение. Это связано с тем, что мы упомянули в нашем коде условие о том, что если значение не является числовым, отправьте пользователю сообщение о том, что допускаются только числовые значения.
То, что нужно запомнить
- VBA TextBox — это специальная опция в пользовательской форме. Который предназначен для ввода данных от самого пользователя.
- Есть два способа установить значения для TextBox: с помощью TextBox.Text и с помощью TextBox.Value.
- Иногда необходимо ограничить ввод данных пользователем, чтобы мы получали правильный тип данных.
Рекомендуемые статьи
Это руководство по VBA TextBox. Здесь мы обсудим, как создать TextBox в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Как использовать функцию VBA IsNumeric?
- Создание поля со списком в Excel
- Вставьте флажок в Excel
- Функция VBA UCASE в Excel
- Как закрыть UserForm в VBA?
6 / 6 / 0 Регистрация: 04.06.2008 Сообщений: 29 |
|
1 |
|
Заполнение данных в листе через форму28.09.2009, 12:23. Показов 8837. Ответов 14
Вообщем есть 183 форма, написанная на Excele (может кто то уже сталкивался), ввод информации в ней до ужаса не удобный(…Ввод одного символа через одну ячейку, вообщем сотрудника напрягает вводить именно таким образом(Решил попробывать написать форму ввода через vba только вот в ней определенно летаю(((…может кто нить подскажет, идеи там, буду очень благодарен
0 |
3895 / 898 / 122 Регистрация: 16.04.2009 Сообщений: 1,824 |
|
29.09.2009, 23:29 |
2 |
А можно для начала увидеть эту форму 183?
0 |
134 / 79 / 6 Регистрация: 06.04.2009 Сообщений: 192 |
|
30.09.2009, 14:45 |
3 |
С формами в VBA работать очень просто, опишите конкретно задачу — поможем.
0 |
6 / 6 / 0 Регистрация: 04.06.2008 Сообщений: 29 |
|
30.09.2009, 21:36 [ТС] |
4 |
А можно для начала увидеть эту форму 183?
Вот и форма…
0 |
paladin 286 / 186 / 7 Регистрация: 25.02.2009 Сообщений: 589 |
|
01.10.2009, 14:58 |
5 |
Можно примерно так сделать (скорее всего кто-то сможет это сделать изящнее, но принцип примерно тот же). Только для TextBox’ов надо будет ограничение длины указывать + менять стартовую ячейку.
1 |
paladin 286 / 186 / 7 Регистрация: 25.02.2009 Сообщений: 589 |
|
01.10.2009, 15:05 |
6 |
Чуть не забыл. Заполнение ячеек происходит при потере фокуса TextBox’ом. Если такое проделывать при каждом изменении, то результат не очень удовлетворительный.
0 |
134 / 79 / 6 Регистрация: 06.04.2009 Сообщений: 192 |
|
01.10.2009, 16:48 |
7 |
Это не форма, а обычный лист Excel с обычными ячейками.
0 |
6 / 6 / 0 Регистрация: 04.06.2008 Сообщений: 29 |
|
01.10.2009, 17:23 [ТС] |
8 |
Можно примерно так сделать (скорее всего кто-то сможет это сделать изящнее, но принцип примерно тот же). Только для TextBox’ов надо будет ограничение длины указывать + менять стартовую ячейку. Спасиб за идею)…обезательно покапаюсь, это пока единственный вариант, и тем более рабочий Добавлено через 4 минуты
Это не форма, а обычный лист Excel с обычными ячейками.
Хм…интересно)
0 |
Toxa33rus 3895 / 898 / 122 Регистрация: 16.04.2009 Сообщений: 1,824 |
||||
01.10.2009, 22:30 |
9 |
|||
Можно примерно так сделать… Фу…
Как это работатет: Так можно по каждой сделать и будет красиво как мне видится… Добавлено через 9 минут
0 |
EducatedFool 0 / 0 / 0 Регистрация: 28.09.2009 Сообщений: 88 |
||||
02.10.2009, 02:10 |
10 |
|||
Сообщение было отмечено как решение РешениеСталкивался ранее с подобной задачей В этот раз всё оказалось намного сложнее — пришлось помучиться с алгоритмом. Но, тем не менее, теперь всё работает: [IMG]http://s53.***********/i142/0910/6d/c420dd2a934c.jpg[/IMG] Достаточно дважды щёлкнуть в любом из квадратиков, как Excel сам определит границы поля (и подсветит поле зелёным цветом), после чего предложит ввести / изменить текст в выбранном поле. Пример файла с макросом: [ссылка удалена] Добавлено через 1 минуту
Возможно, где-то в алгоритме и допущена ошибка, но в данном файле границы полей распознаются вроде бы правильно.
0 |
0 / 0 / 0 Регистрация: 28.09.2009 Сообщений: 88 |
|
02.10.2009, 13:57 |
11 |
Пример файла с макросом (см. предыдущее сообщение)
0 |
134 / 79 / 6 Регистрация: 06.04.2009 Сообщений: 192 |
|
02.10.2009, 14:16 |
12 |
А как ты через CommandButton напишешь неподготовленный текст тут же полюбому должно использоваться TextBox…или я тут уже что то путаю?…и как соеденить кноку с выводом в ячейки?Но идея мне нравиться) В форме имеется тот-же TextBox и кнопка CommandButtton1 (например, — Заполнить). После заполнения TextBox-а, при нажатии CommandButtton1 (событие CommandButtton1.Click()), текст вносится в нужные ячейки, как уже довольно подробно расписали остальные участники обсуждения темы.
0 |
6 / 6 / 0 Регистрация: 04.06.2008 Сообщений: 29 |
|
04.10.2009, 14:33 [ТС] |
13 |
Всем спасиб)…очень помогли ваши идеи…)
0 |
0 / 0 / 0 Регистрация: 26.12.2012 Сообщений: 12 |
|
21.11.2019, 14:27 |
14 |
Пример файла с макросом (см. предыдущее сообщение) Добрый день!
0 |
2630 / 1636 / 744 Регистрация: 23.03.2015 Сообщений: 5,142 |
|
21.11.2019, 14:37 |
15 |
Не по теме: не прошло и полгода….. GIFK, вы создайте новую тему…
0 |
Visual Basic is an excellent language for automating repetitive tasks in Excel. Imagine taking your automation up a notch by creating highly functional user forms that also look tidy to the end-users.
User forms in VBA present you with a blank canvas; you can design and organize the forms to fit your needs at any given time.
In this guide, you will learn to create a student-based data entry form that captures relevant information in linked Excel sheets.
Creating a User Form With Excel VBA
Open a new Excel workbook and perform a few preliminary steps before you start creating your data-entry form.
Save your workbook with the desired name; don’t forget to change the file’s type to an Excel Macro-Enabled Workbook.
Add two sheets to this workbook, with the following names:
- Sheet1: Home
- Sheet2: Student Database
Feel free to change these names as per your requirements.
In the Home sheet, add a button to control the user form macro. Go to the Developer tab and click on the Button option from the Insert drop-down list. Place the button anywhere on the sheet.
Once you’ve placed the button, rename it. Right-click on it, and click on New to assign a new macro to show the form.
Enter the following code in the editor window:
Sub Button1_Click()UserForm.ShowEnd Sub
Once the Home and Student Database sheets are ready, it’s time to design the user form. Navigate to the Developer tab, and click on Visual Basic to open the Editor. Alternatively, you can press ALT+F11 to open the editor window.
Click on the Insert tab and select UserForm.
A blank user form is ready for use; an accompanying toolbox opens along with the form, which has all the essential tools to design the layout.
From the toolbox, select the Frame option. Drag this to the user form and resize it.
In the (name) option, you can change the name of the frame. To showcase the name on the front-end, you can change the name in the Caption column.
Next, select the Label option from the toolbox and insert two labels within this frame. Rename the first one as Application Number and the second as Student ID.
The same renaming logic applies; change the names via the Caption option within the Properties window. Make sure you select the respective label before changing its name.
Next, insert two text boxes next to the label boxes. These will be used to capture the user’s inputs. Change the names of two text boxes via the (Name) column within the Properties window. The names are as follows:
- Textbox1: txtApplicationNo
- Textbox2: txtStudentID
Designing the Student Details Frame
Insert a vertical frame and add 10 labels and 10 text boxes. Rename each of them in the following manner:
- Label3: Name
- Label4: Age
- Label5: Address
- Label6: Phone
- Label7: City
- Label8: Country
- Label9: Date of Birth
- Label10: Zip Code
- Label11: Nationality
- Label12: Gender
Insert corresponding text boxes next to these labels; insert two (or more) optionbutton boxes from the user form toolbox next to the gender label. Rename them Male and Female (along with Custom), respectively.
Designing the Course Details Frame
Add another vertical frame and insert six labels and six text boxes corresponding to each label. Rename the labels as follows:
- Label13: Course Name
- Label14: Course ID
- Label15: Enrollment Start Date
- Label16: Enrollment End Date
- Label17: Course duration
- Label18: Department
Designing the Payment Details Frame
Insert a new frame; add a new label and rename it «Do you wish to update the Payment details?» Insert two optionbuttons; rename them Yes and No.
Similarly, add a new frame containing two additional labels and two combo boxes. Rename the labels as follows:
- Label19: Payment Received
- Label20: Mode of Payment
Designing the Navigation Pane
In the final frame, add three buttons from the toolbox, which will contain code for the execution of the forms.
Rename the buttons in the following manner:
- Button1: Save Details
- Button2: Clear Form
- Button3: Exit
Writing the Automated Form Code: Save Details Button
Double-click on the Save Details button. In the ensuing module, insert the following code:
Private Sub CommandButton2_Click()‘declare the variables used throughout the codesDim sht As Worksheet, sht1 As Worksheet, lastrow As Long'Add validations to check if character values are being entered in numeric fields.If VBA.IsNumeric(txtApplicationNo.Value) = False ThenMsgBox "Only numeric values are accepted in the Application Number", vbCriticalExit SubEnd IfIf VBA.IsNumeric(txtStudentID.Value) = False ThenMsgBox "Only numeric values are accepted in the Student ID", vbCriticalExit SubEnd IfIf VBA.IsNumeric(txtAge.Value) = False ThenMsgBox "Only numeric values are accepted in Age", vbCriticalExit SubEnd IfIf VBA.IsNumeric(txtPhone.Value) = False ThenMsgBox "Only numeric values are accepted in Phone Number", vbCriticalExit SubEnd IfIf VBA.IsNumeric(Me.txtCourseID.Value) = False ThenMsgBox "Only numeric values are accepted in Course ID", vbCriticalExit SubEnd If'link the text box fields with the underlying sheets to create a rolling databaseSet sht = ThisWorkbook.Sheets("Student Database")'calculate last populated row in both sheetslastrow = sht.Range("a" & Rows.Count).End(xlUp).Row + 1'paste the values of each textbox into their respective sheet cellsWith sht.Range("a" & lastrow).Value = txtApplicationNo.Value.Range("b" & lastrow).Value = txtStudentID.Value.Range("c" & lastrow).Value = txtName.Value.Range("d" & lastrow).Value = txtAge.Value.Range("e" & lastrow).Value = txtDOB.Value.Range("g" & lastrow).Value = txtAddress.Value.Range("h" & lastrow).Value = txtPhone.Value.Range("i" & lastrow).Value = txtCity.Value.Range("j" & lastrow).Value = txtCountry.Value.Range("k" & lastrow).Value = txtZip.Value.Range("l" & lastrow).Value = txtNationality.Value.Range("m" & lastrow).Value = txtCourse.Value.Range("n" & lastrow).Value = txtCourseID.Value.Range("o" & lastrow).Value = txtenrollmentstart.Value.Range("p" & lastrow).Value = txtenrollmentend.Value.Range("q" & lastrow).Value = txtcourseduration.Value.Range("r" & lastrow).Value = txtDept.ValueEnd Withsht.Activate'determine gender as per user's inputIf optMale.Value = True Then sht.Range("g" & lastrow).Value = "Male"If optFemale.Value = True Then sht.Range("g" & lastrow).Value = "Female"'Display a message box, in case the user selects the Yes radio buttonIf optYes.Value = True ThenMsgBox "Please select the payment details below"Else:Exit SubEnd IfEnd Sub
If you’re not sure what parts or any of the code means, don’t worry. We’ll explain it thoroughly in the next section.
Automated Form Code Explained
The textboxes will contain a mix of text and numeric values, so it’s essential to restrict the user’s input. The Application Number, Student ID, Age, Phone, Course ID, and Course Duration should contain only numbers, while the rest will contain text.
Using an IF statement, the code triggers error pop-ups if the user enters a character or text value in any of the numeric fields.
Since the error validations are in place, you need to link the text boxes with the sheet cells.
The lastrow variables will calculate the last populated row, and store the values in them for dynamic use.
Finally, the values are pasted from the text boxes into the linked Excel sheet.
Clear Form and Exit Button Codes
In the clear button, you need to write the code to clear the existing values from the user form. This can be done in the following manner:
With Me.txtApplicationNo.Value = "".txtStudentID.Value = ""..txtName.Value = "".txtAge.Value = "".txtAddress.Value = "".txtPhone.Value = "".txtCity.Value = "".txtCountry.Value = "".txtDOB.Value = "".txtZip.Value = "".txtNationality.Value = "".txtCourse.Value = "".txtCourseID.Value = "".txtenrollmentstart.Value = "".txtenrollmentend.Value = "".txtcourseduration.Value = "".txtDept.Value = "".cmbPaymentMode.Value = "".cmbPayment.Value = "".optFemale.Value = False.optMale.Value = False.optYes.Value = False.optNo.Value = FalseEnd With
In the exit button, enter the following code to close the user form.
Private Sub CommandButton5_Click()Unload MeEnd Sub
As a last step, you need to input a few final pieces of code to create the drop-down values for the combo boxes (within the payment frames).
Private Sub UserForm_Activate()With cmbPayment.Clear.AddItem "".AddItem "Yes".AddItem "No"End WithWith cmbPaymentMode.Clear.AddItem "".AddItem "Cash".AddItem "Card".AddItem "Check"End WithEnd Sub
VBA Automation Makes Work Easier
VBA is a multi-faceted language that serves many purposes. User forms are only one aspect within VBA—there are many other uses like consolidating workbooks and worksheets, merging multiple Excel sheets, and other handy automation uses.
No matter the automation goal, VBA is up to the task. If you keep learning and getting practice in, there’s no aspect of your workflow you can’t improve.