OptionButton используют для одного выбора из группы. Два переключателя должны находиться в одной согласованной группе, чтобы не оказаться включёнными одновременно.
Выберем режим отчёта: краткий или полный.
Что подготовить
На UserForm1 разместите Frame fraMode. Внутри него создайте optShort «Краткий» и optFull «Полный». Для optShort задайте Value = True. Добавьте cmdSave вне рамки.
На «Проверка» B2 свободна. Оба варианта должны быть действительно помещены в один Frame, а не только визуально нарисованы поверх него.
Код и порядок выполнения
Option Explicit
Private Sub cmdSave_Click()
Dim mode As String
If Me.optShort.Value Then
mode = "Краткий"
ElseIf Me.optFull.Value Then
mode = "Полный"
Else
MsgBox "Выберите режим": Exit Sub
End If
ThisWorkbook.Worksheets("Проверка").Range("B2").Value = mode
End SubПри выборе полного режима краткий в той же группе отключается. Проверка Else остаётся на случай отсутствия выбора после программного изменения состояния.
Frame группирует элементы и визуально объясняет, к чему относится выбор. Для нескольких независимых групп используйте отдельные контейнеры или согласованное GroupName.
Как проверить результат
После выбора «Полный» в B2 ожидается «Полный». Одновременно «Краткий» в этой группе не отмечен.
Ограничения и частые ошибки
Переключатели в разных Frame не становятся одной группой только из-за одинаковых надписей. Если оба можно включить одновременно, сначала проверьте фактического родителя элементов.
Не используйте OptionButton для независимых опций вроде «PDF» и «Печатать»: пользователь может захотеть обе сразу, и тогда подходят CheckBox.
Caption можно менять для языка интерфейса, поэтому код должен обращаться к стабильным именам optShort и optFull. Не определяйте действие по случайно отредактированному видимому тексту.
Как проверить группу на форме
Сначала щёлкните один вариант, затем другой. Если отметка не снимается у первого, принадлежность группе настроена неверно.
Проверка перед рабочим запуском
- Оба варианта находятся в одном Frame.
- Выбрать можно только один режим.
- Есть значение по умолчанию.
- Отсутствие выбора обрабатывается отдельно.
Сначала выполните пример на учебной копии с указанными именами листов и диапазонами. Сравните исходные данные и результат, затем сохраните проверенный вариант процедуры.
Продолжить изучение: Select Case в VBA: выбор действия по значению, CheckBox в VBA: логическое значение на форме, CommandButton в UserForm: обработчик нажатия.
Разберитесь с макросами вместе с преподавателем
На занятии вы записываете действия, читаете код и проверяете результат на небольшом примере. Преподаватель подберёт задания под ваш уровень и поможет понять связь между командами VBA и изменениями в книге.
Начните с бесплатного вводного урока: 45 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.
Оставить комментарий
Есть вопрос по статье? Напишите комментарий — будем рады обсудить.
Комментарии