- Введение
- Требования к системе
- Установка и настройка
- Быстрый старт
- Основные функции
- Работа с элементами управления
- Настройка стилей
- Создание переключателей
- Добавление иконок
- Работа с коллекцией стилей
- Устранение неполадок
- Часто задаваемые вопросы
Проект VBA Modern Style UserForms предоставляет современные стили для элементов управления MSForms в Excel. Этот инструмент позволяет легко улучшить внешний вид пользовательских форм с минимальными усилиями, добавляя современные визуальные элементы и анимации.
- Применять современный дизайн к различным элементам управления (TextBox, ComboBox, ListBox, CheckBox, OptionButton и др.)
- Обеспечивать анимацию фокуса для улучшения пользовательского опыта
- Настройку цвета и шрифта элементов управления
- Добавление иконок и визуальных элементов
- Управление видимостью и состоянием элементов управления
- Microsoft Excel (2010 или новее рекомендуется)
- Включенная поддержка VBA
- Microsoft Forms 2.0 Object Library
- Windows 7 или новее
- Откройте Excel и перейдите в редактор VBA (нажмите Alt+F11)
- В меню выберите "File" > "Import File"
- Выберите файл
clsModernStyle.clsиз каталогаvba-files/Class/ - Нажмите "Open" для импорта класса
- В редакторе VBA выберите "Tools" > "References"
- Найдите и установите флажок напротив "Microsoft Forms 2.0 Object Library"
- Нажмите "OK" для сохранения изменений
- В редакторе VBA создайте новую пользовательскую форму
- Добавьте элементы управления, которые вы хотите стилизовать
- Добавьте переменную класса в форму:
Dim MStyleItem As clsModernStyle- Создайте новую пользовательскую форму в Excel
- Добавьте несколько элементов управления (TextBox, ComboBox, CheckBox)
- В окне свойств каждого элемента управления установите свойство
ControlTipTextс описанием - В событии
UserForm_Initializeдобавьте следующий код:
Private Sub UserForm_Initialize()
Set MStyleItem = New clsModernStyle
Call MStyleItem.Initialize(Me)
End Sub- Запустите форму, чтобы увидеть современную стилизацию элементов управления
Private Sub UserForm_Initialize()
Set MStyleItem = New clsModernStyle
MStyleItem.Initialize Me, _
ColorBarTitleOn:=RGB(0, 100, 200), _
ColorBarTitleOff:=RGB(120, 120, 120), _
ColorBarBottomOn:=RGB(0, 100, 200), _
ColorBarBottomOff:=RGB(180, 180, 180), _
ColorBackGroundOn:=RGB(255, 255, 255), _
ColorBackGroundOff:=RGB(245, 245, 245)
End SubМетод Initialize - это основной способ применения стилей ко всем элементам управления на форме:
- Автоматически распознает все поддерживаемые элементы управления
- Применяет современные стили ко всем элементам
- Создает дополнительные визуальные элементы (линии, заголовки, иконки)
- Настраивает обработчики событий для анимации фокуса
- TextBox - текстовые поля с анимацией заголовка и кнопкой очистки
- ComboBox - комбинированные поля с анимацией и стрелкой
- ListBox - списки с улучшенным визуальным оформлением
- CheckBox - флажки с современным оформлением
- OptionButton - переключатели с круглыми иконками
- Frame - фреймы (без изменений стиля)
- Label - метки (без изменений стиля)
- CommandButton - кнопки (без изменений стиля)
Для текстовых полей класс автоматически:
- Применяет прозрачный фон и плоский стиль границы
- Добавляет нижнюю линию, которая изменяет цвет при фокусе
- Создает анимированный заголовок, который перемещается при вводе текста
- Добавляет иконку слева (если указано в свойстве Tag)
- Предоставляет кнопку очистки (появляется при вводе текста)
Для комбинированных полей класс:
- Скрывает стандартную стрелку выпадающего списка
- Добавляет собственную стрелку с анимацией
- Применяет прозрачный фон
- Обеспечивает анимацию фокуса аналогично текстовым полям
- Добавляет кнопку очистки при необходимости
Для списков класс:
- Применяет стиль границы
- Добавляет нижнюю линию и заголовок
- Обеспечивает анимацию при выборе элементов
- Поддерживает прокрутку и выбор нескольких элементов
Для флажков и переключателей класс:
- Заменяет стандартные элементы управления на стилизованные иконки
- Обеспечивает визуальную обратную связь при изменении состояния
- Поддерживает разные стили для активного и неактивного состояния
- Позволяет создавать современные переключатели (см. раздел "Создание переключателей")
Класс предоставляет широкие возможности настройки цветов:
- Цвета заголовков (активное/неактивное состояние)
- Цвета нижней линии (активное/неактивное состояние)
- Цвета фона (активное/неактивное состояние)
- Цвета иконок (активное/неактивное состояние)
- Цвета стрелок выпадающего списка
- Цвета границ переключателей
- Цвета кнопок флажков
Цвета можно настроить при инициализации:
MStyleItem.Initialize Me, _
ColorBarTitleOn:=RGB(255, 0, 0), _
ColorBarTitleOff:=RGB(128, 128, 128), _
ColorBarBottomOn:=RGB(0, 0, 255), _
ColorBarBottomOff:=RGB(192, 192, 192)После инициализации можно изменить цвета отдельных элементов:
With MStyleItem.getItemByName(TextBox1.Name)
.ColorBackGroundOff = vbRed
.ColorBackGroundOn = vbGreen
End WithКласс автоматически:
- Устанавливает имя шрифта (по умолчанию Segoe UI)
- Настраивает размеры шрифта для активного и неактивного состояния
- Поддерживает настройку размера шрифта через свойства
FontSizeTitleOffиFontSizeTitleOn
Чтобы создать современный переключатель вместо обычного флажка:
- В конструкторе формы установите свойство
Tagфлажка в значение "SWITCH" - Или программно:
MyCheckBox.Tag = "SWITCH"- При инициализации стилей флажок будет отображаться как современный переключатель с анимацией
- Обычный переключатель - круглая кнопка с анимацией
- Стилизованный переключатель - с использованием иконок из перечисления enumIcons
- Персонализированный переключатель - с настраиваемыми цветами и размерами
Класс включает перечисление enumIcons с различными иконками:
- ArrowOff, ArrowOn (для выпадающих списков)
- CheckBox1, CheckboxComposite, CheckboxFill
- CheckMark
- CircleFill, CircleRing (для переключателей)
- FavoriteStar, FavoriteStarFill
- Heart, HeartFill
- PasswordChar
- RadioBtnOff, RadioBtnOn
- ToggleOff, ToggleOn, ToggleThumb
Чтобы добавить иконку к элементу управления:
- В конструкторе формы установите свойство
Tagэлемента управления в числовое значение иконки - Или программно:
MyTextBox.Tag = 59193 ' Использование числового значения для иконки
' Или
MyTextBox.Tag = "61735" ' Использование строкового значения для иконки- Иконка появится слева от элемента управления
- Иконки отображаются с использованием шрифта Segoe MDL2 Assets
- Цвет иконки изменяется в зависимости от состояния элемента управления
- Иконки автоматически масштабируются под размер элемента управления
После инициализации все стилизованные элементы управления хранятся в коллекции:
' Получение элемента по имени
Dim item As clsModernStyle
Set item = MStyleItem.getItemByName(TextBox1.Name)
' Получение элемента по индексу
Set item = MStyleItem.getItemByIndex(1)Dim count As Byte
count = MStyleItem.CountDim item As clsModernStyle
For Each item In MStyleItem.StyleItems
' Обработка каждого элемента
Debug.Print item.Name
Next item' Изменение цвета фона конкретного элемента
With MStyleItem.getItemByName(TextBox1.Name)
.ColorBackGroundOn = RGB(255, 255, 200)
.ColorBackGroundOff = RGB(255, 255, 255)
End With- Убедитесь, что Microsoft Forms 2.0 Object Library включена в ссылки
- Проверьте, что все элементы управления добавлены до вызова метода Initialize
- Убедитесь, что свойство MultiUse установлено в True для класса
- Проверьте, что события элементов управления не перегружены другими обработчиками
- Убедитесь, что свойства элементов управления не изменяются вручную во время работы класса
- Проверьте, что класс не инициализируется несколько раз
- Уменьшите количество элементов управления на форме
- Избегайте частого вызова методов получения элементов из коллекции
- Используйте свойства видимости и доступности вместо удаления элементов
- "Object variable not set" - убедитесь, что переменная класса правильно инициализирована
- "Method or data member not found" - проверьте, что класс правильно импортирован
- "Can't assign to property" - избегайте прямого присвоения вложенным объектам без проверки на Nothing
Ответ: Используйте методы getItemByName или getItemByIndex для получения конкретного элемента и изменения его свойств цвета.
Ответ: Класс поддерживает основные элементы управления MSForms. Некоторые элементы (например, ScrollBar, SpinButton) поддерживаются частично.
Ответ: Да, можно создать несколько экземпляров класса для разных форм, но не рекомендуется использовать несколько экземпляров для одной формы.
Ответ: Класс использует шрифт Segoe MDL2 Assets, который содержит множество встроенных иконок. Для пользовательских иконок можно использовать изображения или символы из других шрифтов.
Ответ: Класс протестирован с Excel 2010 и новее. Совместимость с более ранними версиями не гарантируется.
Ответ: Текущая версия не предоставляет прямой настройки анимации, но можно изменить визуальные эффекты через цветовые свойства и размеры шрифта.
Ответ: События оригинальных элементов управления продолжают работать как обычно. Класс добавляет только визуальные эффекты и не изменяет логику обработки событий.