Найти в Дзене

📌 Элемент управления TextBox на пользовательской форме. Как заполнить. Пример решения

Оглавление

Основная функция TextBox - ввод и отображение текстовой информации. Он может быть использован для ввода данных, отображения текстовых сообщений и вывода результатов вычислений.

Сегодня подробно рассмотрим: как использовать элемент управления TextBox на пользовательской форме и как его заполнить.

Элемент управления TextBox на пользовательской форме. Как заполнить. Пример решения
Элемент управления TextBox на пользовательской форме. Как заполнить. Пример решения

📢 Скачать исходник с примером кода вы можете в конце статьи 🔽

-3

▶️ Элемент управления TextBox

 TextBox позволяет пользователям вводить и отображать текстовую информацию
TextBox позволяет пользователям вводить и отображать текстовую информацию
  • Размещение на форме: TextBox можно добавить на пользовательскую форму через режим конструктора форм в редакторе VBA. Это делается путем выбора элемента управления TextBox из панели элементов управления и его размещения на форме:
-5
  • Свойства и методы: TextBox имеет разнообразные свойства и методы для настройки его "поведения" и внешнего вида. Например, установить максимальную длину вводимого текста, определить многострочное поле ввода, изменить шрифт и цвет текста.
Таким образом мы ограничили ввод символов до 5
Таким образом мы ограничили ввод символов до 5
  • События: TextBox поддерживает различные события, которые могут быть использованы для реагирования на действия пользователя. Например, использовать событие "Change", чтобы выполнять код при изменении содержимого TextBox.
  • Чтение и запись значений: Чтобы получить текст, введенный пользователем в TextBox следует использовать свойство .Value элемента управления. Аналогично, можно установить значение TextBox через это свойство:
-7
  • Многострочный режим: TextBox может быть настроен в многострочном режиме, что позволяет вводить и отображать несколько строк текста:
Это полезно для создания блоков текста или для ввода длинных комментариев:
Это полезно для создания блоков текста или для ввода длинных комментариев:
  • Ограничение ввода: Вы можете ограничить ввод определенными символами, числами или другой информацией, используя свойства, методы и обработку событий. Например, запретить ввод с клавиатуры:
Так пользователь не сможет вводить данные в TextBox
Так пользователь не сможет вводить данные в TextBox
  • Стилизация и внешний вид: Вы можете изменять внешний вид TextBox, настраивая его цвет, рамки, шрифт и другие атрибуты, чтобы соответствовать дизайну вашего приложения:
-10
  • Интерактивность и интеграция с другими элементами: TextBox может взаимодействовать с другими элементами управления на пользовательской форме, такими как кнопки, списки и т. д. Что позволяет использовать его для передачи данных между различными частями пользовательского интерфейса.

▶️ Исходные данные

Для целей данного примера рассмотрим следующие данные:

-11

🔷 Задача: используя элемент управления TextBox отобразить на пользовательской форме сведения о студентах на основе заданного условия.

Для отображения информации потребуется:

  • пользовательская форма:
-12

Подробно, о том, как создается пользовательская форма мы обсуждали ранее:

  • элемент управления TextBox:
-13
  • "кнопка" для вызова макроса:
-14

▶️ Макрос для вызова формы

Чтобы отобразить заданную форму применим макрос:

-15

Теперь, при клике на кнопку пользователь увидит форму с размещенным на ней TextBox:

-16

Но на ней же нет данных!? 🤔 Да, так не задан основной код!

▶️ Инициализация и активация события

Чтобы по клике на кнопку сразу видеть результат (исходя из дальнейших задач использования формы) следует применить одно из событий Initialize или Activate.

🔘 UserForm_Initialize (применимо для настройки элементов формы перед их отображением):

  • Событие Initialize происходит при инициализации (создании) объекта формы.
  • Это событие возникает до отображения формы, когда она только начинает создаваться.
  • Здесь вы можете инициализировать начальные значения элементов управления, переменных, установить определенные свойства формы.

🔘 UserForm_Activate (применимо для обновления данных, загрузки информации с других источников или для приветствия пользователя):

  • Событие Activate происходит, когда форма уже создана и отображается на экране.
  • Оно вызывается при активации (переключении на) форму, например, когда вы переключаетесь на нее после другой формы или листа.
  • Здесь вы можете выполнять дополнительные действия, связанные с обновлением данных или взаимодействием с пользователем.

В данном примере, будем использовать код в модуле формы (UserForm1), поэтому разницы между Private Sub UserForm_Initialize и Private Sub UserForm_Activate практически нет (можно выбрать любое из событий).

🔔 Однако, есть небольшая разница в поведении в случае, если потребуется в дальнейшем добавить дополнительные действия при активации формы:

  • если будет использован UserForm_Initialize, то код будет выполнен при каждом создании (инициализации) формы.
  • если будет использован UserForm_Activate, код будет выполнен только тогда, когда форма фактически будет активирована, то есть при каждом переключении на нее.

➡️ Вывод:

  • если у вас нет планов добавлять дополнительные действия при активации формы, можно продолжать использовать любое из этих событий;
  • если же в будущем потребуется какое-либо дополнительное обновление или взаимодействие при активации формы, UserForm_Activate может оказаться более удобным.

Итак, для данного примера в модуле формы разместим код:

Этот код предоставляет автоматизированный способ предварительного заполнения текстового поля формы данными из таблицы, на основе условия в другом столбце.
Этот код предоставляет автоматизированный способ предварительного заполнения текстового поля формы данными из таблицы, на основе условия в другом столбце.

📝 Как работает процедура:

  • Определяем последнюю заполненную строку в столбце D.
  • Проходим по каждой строке от 1 до последней найденной строки.
  • Если значение в столбце D равно "не сдано", добавляем значение из столбца В в текстовую переменную textToFill.
  • Устанавливаем многострочный режим для TextBox1.
  • Заполняем TextBox1 значениями из столбца В, разделенными символами новой строки.

Теперь, при активации данной формы, код автоматически выполняется и автоматически заполнит текстовое поле (TextBox1) данными из столбца В таблицы, при условии, что соответствующее значение в столбце D равно "не сдано":

-18

Чтобы решение было более универсальным вынесем критерий выбора в ячейку (например, в ячейку G1):

-19

и определим данную ячейку как именованный диапазон:

-20

Изменив строку кода:

-21

получим возможность более гибко управлять отображением информации:

-22

Вы также можете вынести критерий выбора непосредственно на пользовательскую форму, например, используя элемент управления ComboBox. Но эта тема уже следующего обзора 😊.

-23
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас

📍 Рекомендуемые статьи 🔽

СКАЧАТЬ ПРИМЕР