Найти тему

📌 Как ограничить выбор значений с помощью элемента управления "флажок"

Оглавление

Данный подход позволит установить сделать взаимоисключающий выбор помощью элемента управления "флажок".

Основная цель заключается в управлении состоянием CheckBox: если один CheckBox активирован, остальные становятся неактивными, и наоборот.

Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Как ограничить выбор значений с помощью элемента управления "флажок"
Как ограничить выбор значений с помощью элемента управления "флажок"

📢 Файл с примером размещен в конце статьи 🔽

Пример процедуры предназначен для управления состоянием группы CheckBox. Если один CheckBox выбран, остальные становятся неактивными, и наоборот, если CheckBox снимается, остальные становятся активными.
Пример процедуры предназначен для управления состоянием группы CheckBox. Если один CheckBox выбран, остальные становятся неактивными, и наоборот, если CheckBox снимается, остальные становятся активными.

▶️ Модуль класса

- это специальный модуль в VBA, который используется для создания объектов с определенными свойствами и методами.

Пример модуля класса
Пример модуля класса

Модуль класса позволяет определить собственные типы объектов, что делает программу более структурированной и управляемой.

Основные характеристики

  • Инкапсуляция: модуль класса объединяет данные (свойства) и процедуры (методы), которые работают с этими данными, в одном месте.
  • События: можно создавать события и их обработчики, что позволяет реагировать на действия пользователя или другие условия.
  • Переиспользование кода: один и тот же класс можно использовать многократно, создавая множество объектов с одинаковыми свойствами и методами.

Преимущества

  • Организация кода: легче управлять сложными проектами, когда логика распределена по классам.
  • Модульность: классы можно использовать как строительные блоки, которые легко комбинировать и модифицировать.
  • Поддержка и расширяемость: упрощает поддержку и добавление новых функций без изменения существующего кода.

🔘 Шаг 1. Объявление и инициализация элемента управления

Объявление и инициализация CheckBox
Объявление и инициализация CheckBox
  • Option Explicit объявляет все переменные перед их использованием, что помогает избежать ошибок.
  • Public WithEvents Chk As MSForms.CheckBox объявляет переменную Chk типа CheckBox с поддержкой событий. Это позволяет отслеживать события, такие как клик, для данного CheckBox.

🔘 Шаг 2. Основная процедура (проверка состояния CheckBox) включает следующие этапы:

  • Извлекается индекс текущего CheckBox из его имени.
  • Проходим цикл по всем объектам на листе.
  • Если целевой CheckBox активирован (True) все остальные CheckBox деактивируются и отключаются.
  • Если целевой CheckBox неактивен (False) Все остальные CheckBox становятся активными и включаются
Процедура для управления состоянием группы CheckBox
Процедура для управления состоянием группы CheckBox

🔘 Шаг 3. Обработка события Click

Обработка события
Обработка события

Когда пользователь кликает по элементу управления, вызывается процедура OptionCheckBox, передавая Chk в качестве аргумента.

▶️ Стандартный модуль (управление событиями и состояниями CheckBox)

Для инициализации и управления группой "флажков" на активном листе, используя коллекцию объектов класса Class_Chk в стандартный модуль помещаем код:

Инициализации и управления группой CheckBox
Инициализации и управления группой CheckBox

Код предназначен для создания коллекции объектов Class_Chk, каждый из которых связан с одним из CheckBox на активном листе. Это позволяет эффективно управлять событиями и состояниями CheckBox.

Коллекция будет содержать объекты Class_Chk, каждый из которых связан с определенным элементом управления.

Основная публичная процедура Class_Chk_Init инициализирует коллекцию CheckBox:

Нажмите F5, чтобы запустить модуль
Нажмите F5, чтобы запустить модуль

Процедура Class_Chk_Init инициализирует коллекцию объектов Class_Chk для всех CheckBox на активном листе, имена которых соответствуют шаблону "CheckBox**". Это позволяет управлять событиями и состоянием элементов управления.

Например,

Как ограничить выбор значений с помощью элемента управления
Как ограничить выбор значений с помощью элемента управления

▶️ Практический пример

В качестве примера рассмотрим задачу определения стоимости товара с учетом скидки.

Для решения задачи, добавим макросы, которые будут обрабатывать события клика по CheckBox, рассчитывать скидку и устанавливать итоговую цену:

-11

🔘 События клика: Для каждого элемента управления создано событие Click. Каждое из которых вызывает процедуру UpdateDiscountedPrice, которая обновляет цену со скидкой в ячейке G2.

🔘 Проверка на выбранные CheckBox:

  • Если сумма скидок (переменная discount) остается равной нулю, значит, ни один CheckBox не выбран. В этом случае ячейка с итоговой стоимостью (G2) устанавливается в пустое значение.
  • Если хотя бы один CheckBox выбран, производится вычисление цены со скидкой.

🔘 Процедура UpdateDiscountedPrice:

  • Получение исходной цены: Исходная цена берется из ячейки F2.
  • Инициализация переменной скидки: Переменная скидки discount инициализируется значением 0.
  • Применение скидки: Проверяется состояние каждого CheckBox, и соответствующая скидка добавляется к переменной discount.
  • Вычисление цены со скидкой: Цена со скидкой рассчитывается путем умножения исходной цены на (1 - discount).
  • Установка цены со скидкой: Результат устанавливается в ячейку G2.
-12

Этот подход позволяет автоматически рассчитывать и обновлять цену со скидкой в зависимости от состояния выбранных CheckBox:

-13

Таким образом, пользователь может легко видеть итоговую цену со скидкой, просто отмечая нужные CheckBox на листе Excel.

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel

🔶 Узнать о других способах и приемах работы в Excel можно найти в наших предыдущих обзорах 🔽

Быстрый поиск решения. Путеводитель Excel - Google Диск
Примеры макросов VBA Excel | Excel на ИЗИ: ✅ Приемы эффективной работы в Microsoft Excel | Дзен

🙌 Оставайся с нами на связи и узнавай больше о других методах и приемах работы в Excel:

It's Moskovskaya_Excel на ИЗИ - YouTube
Excel на ИЗИ — полная коллекция видео на RUTUBE
Будем рады видеть вас в числе подписчиков
Будем рады видеть вас в числе подписчиков
Excel на ИЗИ

СКАЧАТЬ ПРИМЕР 🔽

Если вы нашли предоставленный материал полезным, будем благодарны за вашу поддержку
Если вы нашли предоставленный материал полезным, будем благодарны за вашу поддержку
Как ограничить выбор значений с помощью элемента управления .xlsm

Наука
7 млн интересуются