Русский | English | UserForms-Class-ALL
clsTextboxMask - это мощный класс для VBA, который позволяет создавать текстовые поля с масками ввода в Excel и других приложениях Office. Он обеспечивает валидацию ввода, отображение плейсхолдеров и визуальное указание статуса заполнения поля.
- Возможности
- Компоненты
- Установка
- Быстрый старт
- Основные функции
- Работа с элементами управления
- Настройка стиля
- Устранение неполадок
- Поддержка различных типов масок ввода (цифры, даты, время, текст, регулярные выражения)
- Валидация ввода в реальном времени
- Отображение плейсхолдеров с различными статусами (пустое, частично заполненное, полностью заполненное, неверное)
- Визуальная индикация корректности ввода через цвет границы
- Поддержка числовых значений с ограничениями по диапазону, знаку и наличию десятичных знаков
- Поддержка переменной длины текста
- Поддержка валидации через регулярные выражения
- Поддержка настройки цвета плейсхолдера в зависимости от статуса поля
- Поддержка шаблонов плейсхолдера с маркерами: {mask}, {filled}, {remaining}, {holder}, {RegexPattern}, {RegexFilter}, {percent}
clsTextboxMask.cls: Основная реализация класса текстового поля с маскойfrmTestClass.frm: Тестовая форма, демонстрирующая использованиеmodShowForms.bas: Модуль, содержащий функции отображения форм- Документация в папке
docs/: docs/technical_documentation_rus.md- Техническая документация на русском языкеdocs/technical_documentation_eng.md- Техническая документация на английском языкеdocs/user_guide_rus.md- Руководство пользователя на русском языкеdocs/user_guide_eng.md- Руководство пользователя на английском языкеdocs/implementation_examples_rus.md- Примеры реализации на русском языкеdocs/implementation_examples_eng.md- Примеры реализации на английском языке
- Скопируйте файл
clsTextboxMask.clsв ваш проект VBA - Используйте класс в ваших UserForms
' Создайте экземпляр класса clsTextboxMask
Dim numField As clsTextboxMask
Set numField = New clsTextboxMask
' Добавьте числовое поле с ограничениями
Call numField.AddFieldNumeric(inputTextBox:=Me.TextBox1, _
minValue:=0, _
maxValue:=100, _
allowDecimal:=True, _
allowNegative:=False)
' Класс автоматически применяет маску ввода к элементу управления- Инициализация маски: Методы
AddFieldNumeric,AddFieldDate,AddFieldTime,AddFieldText,AddFieldVariableLength,AddFieldRegexпозволяют применить соответствующую маску к текстовому полю - Валидация ввода: Автоматическая проверка корректности ввода в реальном времени
- Отображение плейсхолдеров: Динамическое изменение текста плейсхолдера в зависимости от состояния поля
- Цветовая индикация: Визуальная индикация корректности ввода через изменение цвета границы
- Поддержка различных форматов: Поддержка числовых, текстовых, дат, времени и регулярных выражений
Класс clsTextboxMask добавляет функциональность маски ввода к элементам TextBox с возможностью:
- Установки минимальных и максимальных значений для числовых полей
- Определения формата даты и времени
- Применения текстовых масок с различными символами
- Использования регулярных выражений для валидации
- Настройки цветов границы и плейсхолдера
Класс позволяет настраивать:
- Цвета границы при корректном и некорректном вводе
- Цвета текста плейсхолдера для различных состояний
- Форматы отображения чисел, дат и времени
- Шаблоны плейсхолдеров с использованием маркеров
Пример настройки цветов:
' Настройка цветов при добавлении числового поля
Call numField.AddFieldNumeric(inputTextBox:=Me.TextBox1, _
minValue:=0, _
maxValue:=100, _
allowDecimal:=True, _
allowNegative:=False, _
BorderColorValid:=RGB(0, 150, 0), _
BorderColorInvalid:=RGB(200, 0, 0), _
PlaceholderColor:=RGB(150, 150, 150))- Убедитесь, что Microsoft Forms 2.0 Object Library включена в ссылки
- Проверьте, что элементы управления добавлены до вызова методов класса
- Убедитесь, что свойство MultiUse установлено в True для класса
- Проверьте, что события элементов управления не перегружены другими обработчиками
- Убедитесь, что свойства элементов управления не изменяются вручную во время работы класса
- Проверьте, что класс не инициализируется несколько раз
Этот проект лицензирован в соответствии с Apache License 2.0 - см. файл LICENSE для получения подробностей.
