- Обзор класса
- Архитектура класса
- Свойства
- Методы
- События
- Константы и перечисления
- Детали реализации
- Зависимости
Класс clsTextboxMask - это мощный инструмент для VBA, который позволяет создавать текстовые поля с масками ввода в Excel и других приложениях Office. Он обеспечивает валидацию ввода, отображение плейсхолдеров и визуальное указание статуса заполнения поля.
- Поддержка различных типов масок ввода (цифры, даты, время, текст, регулярные выражения)
- Валидация ввода в реальном времени
- Отображение плейсхолдеров с различными статусами (пустое, частично заполненное, полностью заполненное, неверное)
- Визуальная индикация корректности ввода через цвет границы
- Поддержка числовых значений с ограничениями по диапазону, знаку и наличию десятичных знаков
- Поддержка переменной длины текста
- Поддержка валидации через регулярные выражения
- Поддержка настройки цвета плейсхолдера в зависимости от статуса поля
- Поддержка шаблонов плейсхолдера с маркерами
Определяет типы поддерживаемых масок:
tOtherFix(1) - Фиксированная маска с различными символамиtDateFix(2) - Фиксированная маска для датtTimeFix(3) - Фиксированная маска для времениtNumeric(4) - Числовая маска с возможностью ограничения диапазонаtVariableLen(5) - Маска с переменной длинойtRegex(6) - Маска на основе регулярных выражений
| Свойство | Тип | Описание |
|---|---|---|
TextBox |
MSForms.TextBox | Ссылка на текстовое поле, к которому применяется маска |
LabelPlaceholder |
MSForms.Label | Ссылка на метку плейсхолдера, которая отображает подсказки |
Mask |
String | Маска ввода, определяющая допустимые символы |
Value |
String | Текущее значение текстового поля |
CurrentMaskType |
enumTypeMask | Тип текущей маски |
Min |
Single | Минимальное значение для числовых полей |
Max |
Single | Максимальное значение для числовых полей |
IsDecimal |
Boolean | Разрешены ли десятичные значения |
BorderColorValid |
Long | Цвет границы при корректном вводе |
BorderColorInvalid |
Long | Цвет границы при некорректном вводе |
PlaceholderEmptyColor |
Long | Цвет текста плейсхолдера для пустого поля |
PlaceholderPartialColor |
Long | Цвет текста плейсхолдера для частично заполненного поля |
PlaceholderCompleteColor |
Long | Цвет текста плейсхолдера для полностью заполненного поля |
PlaceholderInvalidColor |
Long | Цвет текста плейсхолдера для поля с некорректными данными |
PlaceholderEmpty |
String | Текст плейсхолдера для пустого поля |
PlaceholderPartial |
String | Текст плейсхолдера для частично заполненного поля |
PlaceholderComplete |
String | Текст плейсхолдера для полностью заполненного поля |
PlaceholderInvalid |
String | Текст плейсхолдера для поля с некорректными данными |
TextBox- Получает или устанавливает текстовое поле, к которому применяется маскаLabelPlaceholder- Получает или устанавливает метку плейсхолдера, которая отображает подсказкиMask- Получает или устанавливает маску ввода, определяющую допустимые символыValue- Получает или устанавливает текущее значение текстового поляCurrentMaskType- Получает или устанавливает тип текущей маскиMin- Получает или устанавливает минимальное значение для числовых полейMax- Получает или устанавливает максимальное значение для числовых полейIsDecimal- Получает или устанавливает, разрешены ли десятичные значенияBorderColorValid- Получает или устанавливает цвет границы при корректном вводеBorderColorInvalid- Получает или устанавливает цвет границы при некорректном вводеPlaceholderEmptyColor- Получает или устанавливает цвет текста плейсхолдера для пустого поляPlaceholderPartialColor- Получает или устанавливает цвет текста плейсхолдера для частично заполненного поляPlaceholderCompleteColor- Получает или устанавливает цвет текста плейсхолдера для полностью заполненного поляPlaceholderInvalidColor- Получает или устанавливает цвет текста плейсхолдера для поля с некорректными даннымиPlaceholderEmpty- Получает или устанавливает текст плейсхолдера для пустого поляPlaceholderPartial- Получает или устанавливает текст плейсхолдера для частично заполненного поляPlaceholderComplete- Получает или устанавливает текст плейсхолдера для полностью заполненного поляPlaceholderInvalid- Получает или устанавливает текст плейсхолдера для поля с некорректными данными
PlaceholderMask- Получает текущую маску плейсхолдера, показывающую оставшиеся символы для заполненияPlaceHolderTemplate- Получает или устанавливает шаблон плейсхолдера с маркерамиVisibleLabelPlaceholder- Получает или устанавливает видимость метки плейсхолдераItems- Получает коллекцию всех элементов маски текстового поляCount- Получает количество элементов в коллекцииRemainingChars- Получает количество оставшихся символов для заполненияFormatValue- Получает или устанавливает формат отображения значенияLenValue- Получает длину текущего значенияlenMask- Получает длину маскиVersion- Получает информацию о версии класса
Добавляет числовое поле с заданными параметрами валидации.
Синтаксис:
Public Sub AddFieldNumeric(ByRef inputTextBox As MSForms.TextBox, _
ByVal minValue As Single, _
ByVal maxValue As Single, _
ByVal allowDecimal As Boolean, _
Optional showPlaceholder As Boolean = True, _
Optional numberFormat As String = "#.0", _
Optional BorderColorValid As XlRgbColor = 0, _
Optional BorderColorInvalid As XlRgbColor = 0, _
Optional PlaceholderEmptyColor As XlRgbColor = 0, _
Optional PlaceholderEmpty As String = vbNullString, _
Optional PlaceholderPartialColor As XlRgbColor = 0, _
Optional PlaceholderPartial As String = vbNullString, _
Optional PlaceholderCompleteColor As XlRgbColor = 0, _
Optional PlaceholderComplete As String = vbNullString, _
Optional PlaceholderInvalidColor As XlRgbColor = 0, _
Optional PlaceholderInvalid As String = vbNullString, _
Optional PlaceHolderTemplate As String = "{holder}")Параметры:
inputTextBox- текстовое поле, к которому применяется маскаminValue- минимальное допустимое значениеmaxValue- максимальное допустимое значениеallowDecimal- разрешение на ввод десятичных значенийshowPlaceholder- отображение плейсхолдера (опционально)numberFormat- формат отображения числа (опционально)BorderColorValid- цвет границы при корректном вводе (опционально)BorderColorInvalid- цвет границы при некорректном вводе (опционально)PlaceholderEmptyColor- цвет плейсхолдера для пустого поля (опционально)PlaceholderEmpty- текст плейсхолдера для пустого поля (опционально)PlaceholderPartialColor- цвет плейсхолдера для частично заполненного поля (опционально)PlaceholderPartial- текст плейсхолдера для частично заполненного поля (опционально)PlaceholderCompleteColor- цвет плейсхолдера для полностью заполненного поля (опционально)PlaceholderComplete- текст плейсхолдера для полностью заполненного поля (опционально)PlaceholderInvalidColor- цвет плейсхолдера для поля с некорректными данными (опционально)PlaceholderInvalid- текст плейсхолдера для поля с некорректными данными (опционально)PlaceHolderTemplate- шаблон плейсхолдера (опционально)
Добавляет поле ввода даты с заданными параметрами валидации.
Синтаксис:
Public Sub AddFieldDate(ByRef inputTextBox As MSForms.TextBox, ByVal dateMask As String, _
ByVal minDate As Date, _
ByVal maxDate As Date, _
Optional dateFormat As String = "dd.mm.yyyy", _
Optional showPlaceholder As Boolean = True, _
Optional BorderColorValid As XlRgbColor = 0, _
Optional BorderColorInvalid As XlRgbColor = 0, _
Optional PlaceholderEmptyColor As XlRgbColor = 0, _
Optional PlaceholderEmpty As String = vbNullString, _
Optional PlaceholderPartialColor As XlRgbColor = 0, _
Optional PlaceholderPartial As String = vbNullString, _
Optional PlaceholderCompleteColor As XlRgbColor = 0, _
Optional PlaceholderComplete As String = vbNullString, _
Optional PlaceholderInvalidColor As XlRgbColor = 0, _
Optional PlaceholderInvalid As String = vbNullString, _
Optional PlaceHolderTemplate As String = "{holder}")Параметры:
inputTextBox- текстовое поле, к которому применяется маскаdateMask- маска ввода датыminDate- минимальная допустимая датаmaxDate- максимальная допустимая датаdateFormat- формат отображения даты (опционально)showPlaceholder- отображение плейсхолдера (опционально)BorderColorValid- цвет границы при корректном вводе (опционально)BorderColorInvalid- цвет границы при некорректном вводе (опционально)PlaceholderEmptyColor- цвет плейсхолдера для пустого поля (опционально)PlaceholderEmpty- текст плейсхолдера для пустого поля (опционально)PlaceholderPartialColor- цвет плейсхолдера для частично заполненного поля (опционально)PlaceholderPartial- текст плейсхолдера для частично заполненного поля (опционально)PlaceholderCompleteColor- цвет плейсхолдера для полностью заполненного поля (опционально)PlaceholderComplete- текст плейсхолдера для полностью заполненного поля (опционально)PlaceholderInvalidColor- цвет плейсхолдера для поля с некорректными данными (опционально)PlaceholderInvalid- текст плейсхолдера для поля с некорректными данными (опционально)PlaceHolderTemplate- шаблон плейсхолдера (опционально)
Добавляет поле ввода времени с заданными параметрами валидации.
Синтаксис:
Public Sub AddFieldTime(ByRef inputTextBox As MSForms.TextBox, ByVal timeMask As String, _
ByVal minTime As Date, _
ByVal maxTime As Date, _
Optional timeFormat As String = "hh:mm", _
Optional showPlaceholder As Boolean = True, _
Optional BorderColorValid As XlRgbColor = 0, _
Optional BorderColorInvalid As XlRgbColor = 0, _
Optional PlaceholderEmptyColor As XlRgbColor = 0, _
Optional PlaceholderEmpty As String = vbNullString, _
Optional PlaceholderPartialColor As XlRgbColor = 0, _
Optional PlaceholderPartial As String = vbNullString, _
Optional PlaceholderCompleteColor As XlRgbColor = 0, _
Optional PlaceholderComplete As String = vbNullString, _
Optional PlaceholderInvalidColor As XlRgbColor = 0, _
Optional PlaceholderInvalid As String = vbNullString, _
Optional PlaceHolderTemplate As String = "{holder}")Параметры:
inputTextBox- текстовое поле, к которому применяется маскаtimeMask- маска ввода времениminTime- минимальное допустимое времяmaxTime- максимальное допустимое времяtimeFormat- формат отображения времени (опционально)showPlaceholder- отображение плейсхолдера (опционально)BorderColorValid- цвет границы при корректном вводе (опционально)BorderColorInvalid- цвет границы при некорректном вводе (опционально)PlaceholderEmptyColor- цвет плейсхолдера для пустого поля (опционально)PlaceholderEmpty- текст плейсхолдера для пустого поля (опционально)PlaceholderPartialColor- цвет плейсхолдера для частично заполненного поля (опционально)PlaceholderPartial- текст плейсхолдера для частично заполненного поля (опционально)PlaceholderCompleteColor- цвет плейсхолдера для полностью заполненного поля (опционально)PlaceholderComplete- текст плейсхолдера для полностью заполненного поля (опционально)PlaceholderInvalidColor- цвет плейсхолдера для поля с некорректными данными (опционально)PlaceholderInvalid- текст плейсхолдера для поля с некорректными данными (опционально)PlaceHolderTemplate- шаблон плейсхолдера (опционально)
Добавляет текстовое поле с заданной маской ввода.
Синтаксис:
Public Sub AddFieldText(ByRef inputTextBox As MSForms.TextBox, _
ByVal textMask As String, _
Optional showPlaceholder As Boolean = True, _
Optional BorderColorValid As XlRgbColor = 0, _
Optional BorderColorInvalid As XlRgbColor = 0, _
Optional PlaceholderEmptyColor As XlRgbColor = 0, _
Optional PlaceholderEmpty As String = vbNullString, _
Optional PlaceholderPartialColor As XlRgbColor = 0, _
Optional PlaceholderPartial As String = vbNullString, _
Optional PlaceholderCompleteColor As XlRgbColor = 0, _
Optional PlaceholderComplete As String = vbNullString, _
Optional PlaceholderInvalidColor As XlRgbColor = 0, _
Optional PlaceholderInvalid As String = vbNullString, _
Optional PlaceHolderTemplate As String = "{holder}")Параметры:
inputTextBox- текстовое поле, к которому применяется маскаtextMask- маска ввода текстаshowPlaceholder- отображение плейсхолдера (опционально)BorderColorValid- цвет границы при корректном вводе (опционально)BorderColorInvalid- цвет границы при некорректном вводе (опционально)PlaceholderEmptyColor- цвет плейсхолдера для пустого поля (опционально)PlaceholderEmpty- текст плейсхолдера для пустого поля (опционально)PlaceholderPartialColor- цвет плейсхолдера для частично заполненного поля (опционально)PlaceholderPartial- текст плейсхолдера для частично заполненного поля (опционально)PlaceholderCompleteColor- цвет плейсхолдера для полностью заполненного поля (опционально)PlaceholderComplete- текст плейсхолдера для полностью заполненного поля (опционально)PlaceholderInvalidColor- цвет плейсхолдера для поля с некорректными данными (опционально)PlaceholderInvalid- текст плейсхолдера для поля с некорректными данными (опционально)PlaceHolderTemplate- шаблон плейсхолдера (опционально)
Добавляет поле с переменной длиной текста.
Синтаксис:
Public Sub AddFieldVariableLength(ByRef inputTextBox As MSForms.TextBox, _
ByVal maxLength As Integer, _
Optional textMask As String = vbNullString, _
Optional showPlaceholder As Boolean = True, _
Optional BorderColorValid As XlRgbColor = 0, _
Optional BorderColorInvalid As XlRgbColor = 0, _
Optional PlaceholderEmptyColor As XlRgbColor = 0, _
Optional PlaceholderEmpty As String = vbNullString, _
Optional PlaceholderPartialColor As XlRgbColor = 0, _
Optional PlaceholderPartial As String = vbNullString, _
Optional PlaceholderCompleteColor As XlRgbColor = 0, _
Optional PlaceholderComplete As String = vbNullString, _
Optional PlaceholderInvalidColor As XlRgbColor = 0, _
Optional PlaceholderInvalid As String = vbNullString, _
Optional PlaceHolderTemplate As String = "{holder}")Параметры:
inputTextBox- текстовое поле, к которому применяется маскаmaxLength- максимальная длина текстаtextMask- маска ввода текста (опционально)showPlaceholder- отображение плейсхолдера (опционально)BorderColorValid- цвет границы при корректном вводе (опционально)BorderColorInvalid- цвет границы при некорректном вводе (опционально)PlaceholderEmptyColor- цвет плейсхолдера для пустого поля (опционально)PlaceholderEmpty- текст плейсхолдера для пустого поля (опционально)PlaceholderPartialColor- цвет плейсхолдера для частично заполненного поля (опционально)PlaceholderPartial- текст плейсхолдера для частично заполненного поля (опционально)PlaceholderCompleteColor- цвет плейсхолдера для полностью заполненного поля (опционально)PlaceholderComplete- текст плейсхолдера для полностью заполненного поля (опционально)PlaceholderInvalidColor- цвет плейсхолдера для поля с некорректными данными (опционально)PlaceholderInvalid- текст плейсхолдера для поля с некорректными данными (опционально)PlaceHolderTemplate- шаблон плейсхолдера (опционально)
Добавляет поле с валидацией через регулярное выражение.
Синтаксис:
Public Sub AddFieldRegex(ByRef inputTextBox As MSForms.TextBox, _
ByVal RegexPattern As String, _
ByVal RegexFilter As String, _
Optional showPlaceholder As Boolean = True, _
Optional BorderColorValid As XlRgbColor = 0, _
Optional BorderColorInvalid As XlRgbColor = 0, _
Optional PlaceholderEmptyColor As XlRgbColor = 0, _
Optional PlaceholderEmpty As String = vbNullString, _
Optional PlaceholderPartialColor As XlRgbColor = 0, _
Optional PlaceholderPartial As String = vbNullString, _
Optional PlaceholderCompleteColor As XlRgbColor = 0, _
Optional PlaceholderComplete As String = vbNullString, _
Optional PlaceholderInvalidColor As XlRgbColor = 0, _
Optional PlaceholderInvalid As String = vbNullString, _
Optional PlaceHolderTemplate As String = "{holder}")Параметры:
inputTextBox- текстовое поле, к которому применяется маскаRegexPattern- паттерн регулярного выражения для валидацииRegexFilter- фильтр регулярного выраженияshowPlaceholder- отображение плейсхолдера (опционально)BorderColorValid- цвет границы при корректном вводе (опционально)BorderColorInvalid- цвет границы при некорректном вводе (опционально)PlaceholderEmptyColor- цвет плейсхолдера для пустого поля (опционально)PlaceholderEmpty- текст плейсхолдера для пустого поля (опционально)PlaceholderPartialColor- цвет плейсхолдера для частично заполненного поля (опционально)PlaceholderPartial- текст плейсхолдера для частично заполненного поля (опционально)PlaceholderCompleteColor- цвет плейсхолдера для полностью заполненного поля (опционально)PlaceholderComplete- текст плейсхолдера для полностью заполненного поля (опционально)PlaceholderInvalidColor- цвет плейсхолдера для поля с некорректными данными (опционально)PlaceholderInvalid- текст плейсхолдера для поля с некорректными данными (опционально)PlaceHolderTemplate- шаблон плейсхолдера (опционально)
Проверяет корректность введенных данных в текстовом поле.
Синтаксис:
Public Function IsValid() As BooleanВозвращаемое значение:
Boolean- True, если данные корректны, иначе False
Очищает текстовое поле.
Синтаксис:
Public Sub Clear()Устанавливает фокус на текстовое поле.
Синтаксис:
Public Sub SetFocus()Удаляет элемент маски текстового поля и связанные с ним компоненты.
Синтаксис:
Public Sub RemoveItem()Событие, вызываемое при изменении значения текстового поля.
Событие, вызываемое при нажатии клавиши в текстовом поле.
Public Enum enumTypeMask
tOtherFix = 1
tDateFix
tTimeFix
tNumeric
tVariableLen
tRegex
[_First] = tOtherFix
[_Last] = tRegex
End EnumПри создании текстовых масок используются следующие символы:
| Символ | Описание |
|---|---|
# |
Цифры (0-9) |
@ |
Латинские буквы (A-Z, a-z) |
A |
Латинские буквы и цифры (A-Z, a-z, 0-9) |
Б |
Кирилические буквы |
б |
Кириллические буквы и цифры |
* |
Любые символы |
Класс поддерживает использование маркеров в шаблонах плейсхолдеров:
{mask}- отображает маску{filled}- количество заполненных символов{remaining}- количество оставшихся символов{holder}- плейсхолдер с маской{RegexPattern}- паттерн регулярного выражения{RegexFilter}- фильтр регулярного выражения{percent}- процент заполнения
Класс автоматически обрабатывает события текстового поля:
Change- обновляет плейсхолдер и проверяет валидностьKeyPress- контролирует вводимые символы в соответствии с маской
- MSForms.TextBox
- MSForms.Label
- VBScript.RegExp (для валидации через регулярные выражения)