Найти в Дзене
VBA Excel с нуля

VBA Excel № 154. Как использовать свойство Tag

Каждый объект UserForm и каждый элемент управления имеют свойство Tag. Оно не содержит конкретные данные и по умолчанию не имеет значения. Свойство Tag можно использовать для хранения информации, которая будет применена в программе. Допустим, мы создаем набор элементов управления TextBox в пользовательском диалоговом окне. От пользователя требуется ввести текст только в некоторые из них, а в остальные поля вводить текст необязательно. В этом случае можно использовать свойство Tag для идентификации полей, которые необходимо заполнять. Значение свойства Tag может быть, например, строкой "Required" (т.е. обязательный). Таким образом, при написании кода обработки данных, введенных пользователем, можно ссылаться на свойство Tag. Назовём элементы управления (ЭУ) TextBox соответственно: TextBox_Фамилия, TextBox_Имя, TextBox_Отчество, TextBox_ДР (день рождения). Я решил, что TextBox(ы): TextBox_Фамилия, TextBox_Имя и TextBox_Отчество являются обязательными для заполнения, а TextBox_ДР не об
Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Немного об интересном свойстве Tag

Каждый объект UserForm и каждый элемент управления имеют свойство Tag. Оно не содержит конкретные данные и по умолчанию не имеет значения. Свойство Tag можно использовать для хранения информации, которая будет применена в программе.

Пример использования свойства Tag

Допустим, мы создаем набор элементов управления TextBox в пользовательском диалоговом окне. От пользователя требуется ввести текст только в некоторые из них, а в остальные поля вводить текст необязательно. В этом случае можно использовать свойство Tag для идентификации полей, которые необходимо заполнять. Значение свойства Tag может быть, например, строкой "Required" (т.е. обязательный).

📌 Скачать файл пример, можно в конце статьи.

Таким образом, при написании кода обработки данных, введенных пользователем, можно ссылаться на свойство Tag.

Для начала создадим форму:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Назовём элементы управления (ЭУ) TextBox соответственно: TextBox_Фамилия, TextBox_Имя, TextBox_Отчество, TextBox_ДР (день рождения).

Я решил, что TextBox(ы): TextBox_Фамилия, TextBox_Имя и TextBox_Отчество являются обязательными для заполнения, а TextBox_ДР не обязательным.

У обязательных ЭУ в свойстве Tag прописываем "Required":

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Для вызова формы в обычном модуле прописываем макрос:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Эту процедуру «вешаем» на кнопку:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Пример функции для проверки текстовых полей

Напишем функцию (в модуле формы), которая проверяет все элементы управления TextBox объекта UserForm1 и возвращает количество пустых текстовых полей, которые требуют ввода информации (то есть тех, у которых свойство Tag равно "Required").

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Каждая строка процедуры прокомментирована. Убедитесь сами (если плохо видно на скриншоте, то в скачанном файле можно разобраться).

Заходим в редактор и дважды нажимая на кнопку Проверить ЭУ CommandButton1 "проваливаемся" в модуль формы,

Скриншот с моего ноутбука
Скриншот с моего ноутбука

где возникает пустой код кнопки CommandButton1:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Пропишем в ней единственную строку вызова нашей функции

Скриншот с моего ноутбука
Скриншот с моего ноутбука

А теперь попробуем поиграться:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

То, что я не заполнил TextBox "TextBox_ДР" процедура даже не заметила, а вот то, что я не заполнил "TextBox_Отчество", вызвала у программы негативные ощущения, о чём она незамедлительно мне сообщила.

Подводя итог, скажу, что свойство Tag помогает в обработке данных. В нашем примере оно позволяет определить, какие текстовые поля необходимо заполнить, что упрощает проверку введенных данных.

СКАЧАТЬ ФАЙЛ ПРИМЕР