Skip to content

Latest commit

 

History

History
298 lines (246 loc) · 17.8 KB

File metadata and controls

298 lines (246 loc) · 17.8 KB

Руководство пользователя для проекта VBA Modern Style UserForms

Содержание

  1. Введение
  2. Требования к системе
  3. Установка и настройка
  4. Быстрый старт
  5. Основные функции
  6. Работа с элементами управления
  7. Настройка стилей
  8. Создание переключателей
  9. Добавление иконок
  10. Работа с коллекцией стилей
  11. Устранение неполадок
  12. Часто задаваемые вопросы

Введение

Проект VBA Modern Style UserForms предоставляет современные стили для элементов управления MSForms в Excel. Этот инструмент позволяет легко улучшить внешний вид пользовательских форм с минимальными усилиями, добавляя современные визуальные элементы и анимации.

Что может делать этот проект:

  • Применять современный дизайн к различным элементам управления (TextBox, ComboBox, ListBox, CheckBox, OptionButton и др.)
  • Обеспечивать анимацию фокуса для улучшения пользовательского опыта
  • Настройку цвета и шрифта элементов управления
  • Добавление иконок и визуальных элементов
  • Управление видимостью и состоянием элементов управления

Требования к системе

  • Microsoft Excel (2010 или новее рекомендуется)
  • Включенная поддержка VBA
  • Microsoft Forms 2.0 Object Library
  • Windows 7 или новее

Установка и настройка

Шаг 1: Импорт класса

  1. Откройте Excel и перейдите в редактор VBA (нажмите Alt+F11)
  2. В меню выберите "File" > "Import File"
  3. Выберите файл clsModernStyle.cls из каталога vba-files/Class/
  4. Нажмите "Open" для импорта класса

Шаг 2: Настройка ссылок

  1. В редакторе VBA выберите "Tools" > "References"
  2. Найдите и установите флажок напротив "Microsoft Forms 2.0 Object Library"
  3. Нажмите "OK" для сохранения изменений

Шаг 3: Создание пользовательской формы

  1. В редакторе VBA создайте новую пользовательскую форму
  2. Добавьте элементы управления, которые вы хотите стилизовать
  3. Добавьте переменную класса в форму:
Dim MStyleItem As clsModernStyle

Быстрый старт

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

  1. Создайте новую пользовательскую форму в Excel
  2. Добавьте несколько элементов управления (TextBox, ComboBox, CheckBox)
  3. В окне свойств каждого элемента управления установите свойство ControlTipText с описанием
  4. В событии UserForm_Initialize добавьте следующий код:
Private Sub UserForm_Initialize()
    Set MStyleItem = New clsModernStyle
    Call MStyleItem.Initialize(Me)
End Sub
  1. Запустите форму, чтобы увидеть современную стилизацию элементов управления

Пример с настройкой цветов

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)
  • Предоставляет кнопку очистки (появляется при вводе текста)

Комбинированные поля

Для комбинированных полей класс:

  • Скрывает стандартную стрелку выпадающего списка
  • Добавляет собственную стрелку с анимацией
  • Применяет прозрачный фон
  • Обеспечивает анимацию фокуса аналогично текстовым полям
  • Добавляет кнопку очистки при необходимости

Списки

Для списков класс:

  • Применяет стиль границы
  • Добавляет нижнюю линию и заголовок
  • Обеспечивает анимацию при выборе элементов
  • Поддерживает прокрутку и выбор нескольких элементов

Флажки и переключатели

Для флажков и переключателей класс:

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

Настройка стилей

Цветовые схемы

Класс предоставляет широкие возможности настройки цветов:

  • Цвета заголовков (активное/неактивное состояние)
  • Цвета нижней линии (активное/неактивное состояние)
  • Цвета фона (активное/неактивное состояние)
  • Цвета иконок (активное/неактивное состояние)
  • Цвета стрелок выпадающего списка
  • Цвета границ переключателей
  • Цвета кнопок флажков

Настройка через метод Initialize

Цвета можно настроить при инициализации:

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

Создание переключателей

Чтобы создать современный переключатель вместо обычного флажка:

  1. В конструкторе формы установите свойство Tag флажка в значение "SWITCH"
  2. Или программно:
MyCheckBox.Tag = "SWITCH"
  1. При инициализации стилей флажок будет отображаться как современный переключатель с анимацией

Типы переключателей

  • Обычный переключатель - круглая кнопка с анимацией
  • Стилизованный переключатель - с использованием иконок из перечисления enumIcons
  • Персонализированный переключатель - с настраиваемыми цветами и размерами

Добавление иконок

Использование встроенных иконок

Класс включает перечисление enumIcons с различными иконками:

  • ArrowOff, ArrowOn (для выпадающих списков)
  • CheckBox1, CheckboxComposite, CheckboxFill
  • CheckMark
  • CircleFill, CircleRing (для переключателей)
  • FavoriteStar, FavoriteStarFill
  • Heart, HeartFill
  • PasswordChar
  • RadioBtnOff, RadioBtnOn
  • ToggleOff, ToggleOn, ToggleThumb

Установка иконок

Чтобы добавить иконку к элементу управления:

  1. В конструкторе формы установите свойство Tag элемента управления в числовое значение иконки
  2. Или программно:
MyTextBox.Tag = 59193  ' Использование числового значения для иконки
' Или
MyTextBox.Tag = "61735"  ' Использование строкового значения для иконки
  1. Иконка появится слева от элемента управления

Настройка иконок

  • Иконки отображаются с использованием шрифта Segoe MDL2 Assets
  • Цвет иконки изменяется в зависимости от состояния элемента управления
  • Иконки автоматически масштабируются под размер элемента управления

Работа с коллекцией стилей

Доступ к отдельным элементам

После инициализации все стилизованные элементы управления хранятся в коллекции:

' Получение элемента по имени
Dim item As clsModernStyle
Set item = MStyleItem.getItemByName(TextBox1.Name)

' Получение элемента по индексу
Set item = MStyleItem.getItemByIndex(1)

Получение количества элементов

Dim count As Byte
count = MStyleItem.Count

Перебор всех элементов

Dim 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?

Ответ: Класс протестирован с Excel 2010 и новее. Совместимость с более ранними версиями не гарантируется.

Вопрос: Можно ли настроить анимацию?

Ответ: Текущая версия не предоставляет прямой настройки анимации, но можно изменить визуальные эффекты через цветовые свойства и размеры шрифта.

Вопрос: Как обработать события стилизованных элементов?

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