Давайте рассмотрим класс TextBox языка VBA, который позволяет размещать на форме текстовое поле. Класс vba TextBox позволяет создавать как многострочные, так и однострочные области для ввода текста, хот в последнем случае удобней воспользоваться функцией MsgBox. Также можно добавлять полосы прокрутки и определять максимальную длину вводимых символом. TextBox может использоваться и как компонент для ввода пароля.
Давайте для начала рассмотрим основные свойства класса TextBox и его базовое событие, а потом напишем пример.
События класса 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 |
В этой процедуре происходит настройка начальных значений, некоторые из них можно задать и в окне Свойств, но я решил для наглядности прописать все в программном коде. Тут нет ничего страшно, как только форма загрузится в память, кнопка “Проверить” будет неактивной, размер шрифта для текстового поля и надписи установлен в 20, также мы установили максимальную длину текста для класса TextBox VBA языка и его однострочность.