Download The Excel Example File
If you are more of a visual learner, I have put together an example file with the userform and all the various components I described throughout this article. Feel free to directly download the spreadsheet by clicking the download button below.
Download Example File
Hidden Hacks For VBA Macro Coding
After 10+ years of creating macros and developing add-ins, I’ve compiled all the hacks I wish I had known years ago!
Learn These Hacks Now For Free!
Chris Newman
Chris is a finance professional and Excel MVP recognized by Microsoft since 2016. With his expertise, he founded TheSpreadsheetGuru blog to help fellow Excel users, where he shares his vast creative solutions & expertise. In addition, he has developed over 7 widely-used Excel Add-ins that have been embraced by individuals and companies worldwide.
Описание VBA TextBox в Excel
TextBox обеспечивает возможность взаимодействия пользователя с макросами и пользовательским интерфейсом Excel. Он может быть использован для ввода данных, отображения результатов вычислений или просто показа информации.
TextBox позволяет изменять такие свойства, как текст, размер, цвет, шрифт и выравнивание. Можно также задать его положение на листе Excel и настроить реакцию на события, например, нажатие клавиши или изменение значения.
Для создания и настройки TextBox в VBA достаточно выполнить следующие шаги:
1. | Выделите область на листе Excel, где вы хотите разместить TextBox. |
2. | Откройте режим разработчика в меню Excel и выберите элемент «Вставить» → «Формы» → «Текстовое поле». Щелкните на листе в области, где вы хотите разместить TextBox. |
3. | Откройте редактор VBA, щелкнув правой кнопкой мыши на TextBox и выбрав пункт «Присоединить код». |
4. | Напишите необходимый код VBA для работы с TextBox, устанавливая значения свойств или обрабатывая события. |
TextBox позволяет обмениваться данными между пользователем и макросами в Excel. Он предоставляет удобный способ ввода и отображения текста, а также возможность настройки его внешнего вида и функциональности.
События класса TextBox VBA языка
Value или Text – текст, который введен в текстовое поле TextBox
Visible – позволяет спрятать (значение false) или снова отобразить (значение true) элемент.
MultiLine – данное свойство позволяет задать, будет ли текстовое поле однострочным (false), или многострочным (true).
WordWrap – свойство актуально использовать, если MultiLine содержит значение true, в таком случае, если WordWrap установлено в true, то произойдет автоматический перенос текста на новую строку, когда будет достигнута граница текстового поля TextBox.
ScrollBars – позволяет указать, будут или отображаться полосы прокрутки. Свойство может принимать следующие значения:
- 0 – fmScrollBarsNone (полосы прокрутки отсутствуют)
- 1– fmScrollBarsHorizontal (горизонтальная полоса прокрутки)
- 2 – fmScrollBarsVertical (вертикальная полоса прокрутки)
- 3 – fmScrollBarsBoth (горизонтальная и вертикальная прокрутки)
PasswordChar – позволяет задать символ, который будет отображаться вместо вводимых данных. Свойство актуально при вводе пароля.
MaxLength – позволяет указать максимальное количество символов, которое можно ввести в текстовое поле. По умолчанию – 0, то есть, ограничения нет.
Как и у других элементов управления, у класса TextBox есть события, основным событием для TextBox является Change – оно возникает каждый раз, когда в текстовое поле вводится символ. Возможно вам приходилось видеть такую картинку: при вводе проверочного кода, пока его длинна не достигнет заданной (например, 12 символов), кнопка “Проверить” не будет доступной. Тут тоже можно такое реализовать.
Хорошо, теперь настало время практики. Я не буду снова вникать во все мелочи, как в прошлых статьях, поэтому скажу прямо: добавьте в проект новый модуль и новую форму. Выберите из окна ToolBox элемент управления Надпись (Label), добавьте ее на форму, пусть будет вверху, под ней поставьте текстовое поле (TextBox), а в самом низу – пусть будет кнопка (CommandButton с надписью “Проверить”). Хорошо, как и прежде, в редакторе кода для модуля прописываем процедуру:
Sub Module3() UserForm3.Show End Sub
Учтите, что имя вашего модуля и формы могут отличаться.
Теперь нам нужно написать программный код на языке VBA, который будет делать следующее:
В текстовое поле будет вводиться текст, длина текста не больше 12 символов, пока длина будет меньше 12 символов, кнопка “Проверить” будет недоступна. Как только мы достигаем предела, кнопка становится активной, при нажатии на нее, содержимое текстового поля TextBox должно отобразиться в поле Label (Надпись).
И так, давайте посмотрим на процедуры, которые я прописал в редакторе кода для формы:
Private Sub bCheck_Click() Label1.Caption = TextBox1.Text End Sub
Тут идет обработка одиночного щелчка по кнопке, при нажатии на кнопку, свойству Caption объекта Label1 (Надпись) будет присвоено содержимое текстового поля TextBox1 (свойство Text).
Private Sub TextBox1_Change() Dim LenText As Byte LenText = Len(TextBox1.Text) If LenText = 12 Then bCheck.Enabled = True Else bCheck.Enabled = False End If End Sub
Тут происходит обработка события Change для текстового поля объекта TextBox1 класса vba TextBox. Переменная LenText будет хранить длину вводимого текста, при каждом вводе данных будет происходить проверка длины, если она ровна 12 – то произойдет активация кнопки, иначе 0 кнопка будет неактивна.
Private Sub UserForm_Activate() Label1.Caption = "Введите любой текст" Label1.FontSize = 15 Label1.ForeColor = &H0 Label1.TextAlign = fmTextAlignCenter Label1.WordWrap = True TextBox1.MultiLine = False TextBox1.MaxLength = 12 TextBox1.FontSize = 15 bCheck.Enabled = False End Sub
Adding Textbox Values to Sheet
Now we have our UserForm created and we can run it by clicking F5 on our keyboard, while in the module, or by clicking on the play button in the module:
Once we click on it, the User Form will be shown but we cannot do anything with it. The things we write in Text Boxes will not be saved anywhere. To change this, we need to add the code to our User Form. This has to be done in VBA.
We will get back to the VBA and double-click on the “Add a student” Command Button. Next thing, we will create the following code:
Private Sub CommandButton1_Click()
Sheet1.Activate
Range(«A1»).End(xlDown).Offset(1, 0).Select
ActiveCell.Value = Box1.Value
ActiveCell.Offset(0, 1).Value = Box2.Value
ActiveCell.Offset(0, 2).Value = Box3.Value
End Sub
1 |
PrivateSubCommandButton1_Click() Sheet1.Activate Range(«A1»).End(xlDown).Offset(1,).Select ActiveCell.Value=Box1.Value ActiveCell.Offset(,1).Value=Box2.Value ActiveCell.Offset(,2).Value=Box3.Value EndSub |
In our Sheet1, which will be named “Student’s grades”, we will create two rows, one with the column names and one with the student for example:
Now we will get back to our VBA and run the User Form by clicking F5 on our keyboard.
We will input the needed data:
And click on the “Add a student” Command Button. When we do, row three will be populated with the desired data:
You will also notice that we did not restrict our data, so users basically can insert any text or number in our User Forms. This part can also be coded, but it is not in the scope of this exercise.
Post Views: 247
How to Edit a Text Box
Excel provides many built-in customization tools, allowing you to spruce up your text box.
In this part of the tutorial, we will walk you through how you can use the Text Box section (Format Shape > Size & Properties > Text Box) to make your input boxes more visually appealing.
Vertical Alignment
This setting allows you to align the text inside your input box. There are multiple ways you can go about that:
- Top
- Middle
- Bottom
- Top Centered
- Middle Centered
- Bottom Centered
Text Direction
This setting gives you the option to change the orientation of the text in your text box. The customization options go as follows:
- Horizontal
- Rotate all text 90°
- Rotate all text 270°
- Stacked
Resize Shape to Fix Text
Checking this box will adjust the size of the text box based on the amount of text in it, removing any unnecessary empty space.
Allow Text to Overflow Shape
By checking this box, you allow the content of the text box to overflow into other cells if the text can’t fit into the space within the text box.
Tweak these values to change the margin for each side of your text box.
Uncheck this box to stop text wrapping within the text box.
Columns
This setting allows you to split your text box into multiple columns. To do that, follow these steps:
1. Select the “Columns” button.
2. Set the “Number” value to “2.”
3. Click “OK.”
Format All Text Boxes — Macro
These two macros will format all the ActiveX Text Boxes on the active Excel worksheet.
- AllTextBoxesBY16 — changes font to 16 pt, black, with yellow background
- AllTextBoxesBW14 — changes font to 14 pt, black, with yellow background
You can change the settings in the code, for the colours and font size, as needed.
This macro, AllTextBoxesBY16, changes the font size to 16 pt, in black, with a light yellow background.
Sub AllTextBoxesBW14() 'modify all textboxes ' on active sheet '14pt font, black 'white backgroune Dim ws As Worksheet Dim oTB As Object Dim myID As String myID = "Forms.TextBox.1" Set ws = ActiveSheet For Each oTB In ws.OLEObjects With oTB .Object.BackColor _ = RGB(255, 255, 255) .Object.ForeColor _ = RGB(0, 0, 0) .Object.Font.Size = 14 .Height = 20 End With Next oTB End Sub
This macro, AllTextBoxesBY16, changes the font size to 16 pt, in black, with a light yellow background.
Sub AllTextBoxesBY16() 'modify all textboxes ' on active sheet '14pt font, black 'white backgroune Dim ws As Worksheet Dim oTB As Object Dim myID As String myID = "Forms.TextBox.1" Set ws = ActiveSheet For Each oTB In ws.OLEObjects With oTB .Object.BackColor _ = RGB(255, 255, 153) .Object.ForeColor _ = RGB(0, 0, 0) .Object.Font.Size = 16 .Height = 30 End With Next oTB End Sub
Использование входной маски
. Вы можете задаться вопросом, есть ли способ настроить маску ввода, которая автоматически добавит двоеточие. Хорошая новость — да, есть. Плохих новостей нет, нет. Звук запутанный? Позволь мне объяснить.
Вы можете настроить пользовательский формат, который отобразит ваше время в любом формате. Например, вы можете использовать следующие шаги:
- Выберите ячейки, которые вы хотите использовать для ввода времени.
- Выберите » Формат» в меню «Ячейки». Excel отображает диалоговое окно » Формат ячеек «.
- Убедитесь, что отображается вкладка » Число «.
- В списке «Категория» выберите » Пользовательский».
- Замените все, что находится в поле » Тип», с #»:»00 .
- Нажмите OK .
Теперь вы можете ввести свое время, используя только цифры. Проблема (и это плохая новость) заключается в том, что ячейка действительно не содержит времени. Если вы введете 230 (за 2:30), она не будет содержать 2:30 как раз — она содержит двести тридцать. Таким образом, вы не можете напрямую использовать содержимое ячейки непосредственно во времени.
Чтобы преодолеть это, вы можете использовать другой столбец для отображения введенных цифр, преобразованных во время. Все, что вам нужно сделать, это использовать формулу для преобразования. Например, если введенное время было в ячейке A3 , вы можете использовать следующую формулу в другой ячейке для преобразования:
Отформатируйте ячейку, которая содержит приведенную выше формулу, чтобы отображать один из различных временных форматов, и все вы настроены.
(Полная статья и многое другое в источнике.)
Formatting The Userform Object
It’s very important to keep in mind what your overarching formats will be when first building a Userform. Properties that are shared between all controls (such as Font color and BackColor), default to whatever the Userform Object is currently set to prior to inserting a new control.
We can leverage these inter-workings to our benefit and knock out a large amount of the formatting needs. If you are performing a makeover to an existing Userform, you’re unfortunately going to have to apply these formats to all the controls individually (but make sure to select multiple controls by holding down your Ctrl key and “bulk change” the formats to save time.
Here are the key property changes you should make at the Userform level and therefore be applied to every control on your Userform where applicable.
Font Size: 10Font Type: CalibriFont ForeColor: &H00464646& (Dark Gray)BackColor: &H00FFFFFF& (White)BorderColor: &H00A9A9A9& (Light Gray)
Свойства текстового поля
Свойство | Описание |
---|---|
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 на проекте пользовательской формы.
How to Create TextBox in User Form
The first thing that we need to do is create a User Form. To do this, we will go open the Excel spreadsheet, then click ALT + F11, and then right-click in the left window of our screen and choose Insert >> User Form:
When we do click on it, a User Form window will appear. It looks like this:
To add a Textbox to our User Form, we need to find our Toolbox. We simply need to go to the View tab and find Toolbox there:
Once Toolbox appears, we can see various control buttons that we can add to our User Form. The Textbox is located in the third place:
We will first add a couple of labels (second place in the Toolbox) to our User Form by simply clicking on the control button, and then drawing the label in the User Form. Labels will be: Student Name, Subject, and Grade:
Next to it, we will add Textboxes on the left side of every label. We will do that by clicking on the Textbox in Controls, and then using drag and drop to draw them. Our User Form will now look like this:
Textbox в VBA Excel 2010:
Textbox в VBA Excel 2010 используется для создания и редактирования текстовых полей, которые пользователь может заполнять информацией. Этот компонент удобен для ввода данных и предоставления возможности пользователям вносить изменения в ячейки таблицы.
Textbox может быть использован для различных задач, таких как:
- Создание форм, которые позволяют пользователям вводить данные с определенными ограничениями.
- Отображение текстовой информации, такой как комментарии, подсказки или инструкции для пользователя.
- Применение макросов для автоматизации процессов ввода данных.
Особенность Textbox в VBA Excel 2010 состоит в его возможностях настройки и взаимодействия с другими элементами пользовательского интерфейса. Например, можно задать текстовое поле, чтобы оно принимало только числовые значения, или ограничить длину вводимого текста. Также можно связать Textbox с ячейкой таблицы Excel, чтобы автоматически обновлять значение Textbox при изменении значения ячейки.
Textbox в VBA Excel 2010 отлично дополняет функциональность программы, позволяя создавать более удобные и интерактивные пользовательские интерфейсы. Он предоставляет возможность пользователям активно взаимодействовать с данными и процессами в программе. Изучение и использование Textbox в VBA Excel 2010 поможет вам создавать более эффективные и удобные приложения на платформе Excel.
Как удалить текстовое поле в Excel
Текстовые поля в Excel позволяют пользователю вводить и отображать текстовую информацию в ячейках. Однако, иногда возникает необходимость удалить эти поля. В данном разделе мы рассмотрим несколько способов удаления текстовых полей в Excel.
Способ 1: Удаление текстового поля с помощью кнопки «Удалить поле»
1. Выделите ячку, содержащую текстовое поле, которое вы хотите удалить.
2. На вкладке «Разработчик» в группе «Управление полем» найдите кнопку «Удалить поле».
3. Нажмите на кнопку «Удалить поле».
Способ 2: Удаление текстового поля с помощью контекстного меню
1. Выделите ячку, содержащую текстовое поле, которое вы хотите удалить.
2. Нажмите правой кнопкой мыши на выделенную ячейку, чтобы открыть контекстное меню.
3. В контекстном меню выберите опцию «Удалить поле».
Способ 3: Удаление текстового поля с помощью команды «Удалить» в меню «Правка»
1. Выделите ячку, содержащую текстовое поле, которое вы хотите удалить.
2. В меню «Правка» найдите команду «Удалить».
3. В выпадающем списке выберите опцию «Поле».
Примечание: Все описанные выше способы удаляют текстовое поле, но оставляют содержимое ячки без изменений. Если вы хотите удалить содержимое ячки полностью, вы можете использовать один из указанных способов и удалить текст в ячейке отдельно.
Создать макрос в Excel с помощью макрорекордера
Для начала проясним, что собой представляет макрорекордер и при чём тут макрос.
Макрорекордер – это вшитая в Excel небольшая программка, которая интерпретирует любое действие пользователя в кодах языка программирования VBA и записывает в программный модуль команды, которые получились в процессе работы. То есть, если мы при включенном макрорекордере, создадим нужный нам ежедневный отчёт, то макрорекордер всё запишет в своих командах пошагово и как итог создаст макрос, который будет создавать ежедневный отчёт автоматически.
Этот способ очень полезен тем, кто не владеет навыками и знаниями работы в языковой среде VBA. Но такая легкость в исполнении и записи макроса имеет свои минусы, как и плюсы:
- Записать макрорекордер может только то, что может пощупать, а значит записывать действия он может только в том случае, когда используются кнопки, иконки, команды меню и всё в этом духе, такие варианты как сортировка по цвету для него недоступна;
- В случае, когда в период записи была допущена ошибка, она также запишется. Но можно кнопкой отмены последнего действия, стереть последнюю команду которую вы неправильно записали на VBA;
- Запись в макрорекордере проводится только в границах окна MS Excel и в случае, когда вы закроете программу или включите другую, запись будет остановлена и перестанет выполняться.
Для включения макрорекордера на запись необходимо произвести следующие действия:
- в версии Excel от 2007 и к более новым вам нужно на вкладке «Разработчик» нажать кнопочку «Запись макроса»>;>
- в версиях Excel от 2003 и к более старым (они еще очень часто используются) вам нужно в меню «Сервис» выбрать пункт «Макрос» и нажать кнопку «Начать запись».
Следующим шагом в работе с макрорекордером станет настройка его параметров для дальнейшей записи макроса, это можно произвести в окне «Запись макроса», где:
- поле «Имя макроса» — можете прописать понятное вам имя на любом языке, но должно начинаться с буквы и не содержать в себе знаком препинания и пробелы;
- поле «Сочетание клавиш» — будет вами использоваться, в дальнейшем, для быстрого старта вашего макроса. В случае, когда вам нужно будет прописать новое сочетание горячих клавиш, то эта возможность будет доступна в меню «Сервис» — «Макрос» — «Макросы» — «Выполнить» или же на вкладке «Разработчик» нажав кнопочку «Макросы»>;
-
поле «Сохранить в…» — вы можете задать то место, куда будет сохранен (но не послан) текст макроса, а это 3 варианта:
- «Эта книга» — макрос будет записан в модуль текущей книги и сможет быть выполнен только в случае, когда данная книга Excel будет открыта;
- «Новая книга» — макрос будет сохранен в тот шаблон, на основе которого в Excel создается пустая новая книга, а это значит, что макрос станет доступен во всех книгах, которые будут создаваться на этом компьютере с этого момента;
- «Личная книга макросов» — является специальной книгой макросов Excel, которая называется «Personal.xls» и используется как специальное хранилище-библиотека макросов. При старте макросы из книги «Personal.xls» загружаются в память и могут быть запущены в любой книге в любой момент.
- поле «Описание» — здесь вы можете описать, что и как должен делать макрос, для чего он создавался и какие функции несет, это чисто информативное поле, что называется на память.
После того как вы запустили и записали свой макрос, выполнив все нужные действия, запись можно прекратить командой «Остановить запись» и ваш макрос с помощью макрорекордера будет создан.
AddTextBox(ControlCollection, Double, Double, Double, Double, String)
Добавляет в заданное место листа новый элемент управления TextBox указанного размера.
Параметры
Коллекция, в которую добавляется элемент управления. Не предоставляйте этот параметр вручную. При вызове этого метода для коллекции, возвращаемой свойством Controls (в проекте уровня приложения) или свойством Controls (в проекте уровня документа), данный параметр предоставляется автоматически.
Расстояние в пунктах между левым краем элемента управления и левым краем листа.
Расстояние в пунктах между верхним краем элемента управления и верхним краем листа.
Ширина элемента управления в пунктах.
Высота элемента управления в пунктах.
Имя элемента управления.
Исключения
Аргумент имени равен null или имеет нулевую длину.
Элемент управления с таким именем уже имеется в данном экземпляре ControlCollection.
Примеры
Следующий пример кода добавляет TextBox элемент управления в верхнюю часть листа, а затем назначает текст элементу управления. Чтобы использовать этот пример, запустите его из Sheet1 класса в проекте уровня документа.
Комментарии
AddTextBoxМетод позволяет добавлять TextBox объекты в конец ControlCollection . Чтобы удалить TextBox элемент управления, который был ранее добавлен программно, используйте Remove метод.
Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.
Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.