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.

Учебный код: OptionButton в VBA: выбор одного варианта.
Учебный код: OptionButton в VBA: выбор одного варианта.

Как проверить результат

После выбора «Полный» в B2 ожидается «Полный». Одновременно «Краткий» в этой группе не отмечен.
После выбора «Полный» в B2 ожидается «Полный». Одновременно «Краткий» в этой группе не отмечен.

После выбора «Полный» в B2 ожидается «Полный». Одновременно «Краткий» в этой группе не отмечен.

Ограничения и частые ошибки

Переключатели в разных Frame не становятся одной группой только из-за одинаковых надписей. Если оба можно включить одновременно, сначала проверьте фактического родителя элементов.

Не используйте OptionButton для независимых опций вроде «PDF» и «Печатать»: пользователь может захотеть обе сразу, и тогда подходят CheckBox.

Caption можно менять для языка интерфейса, поэтому код должен обращаться к стабильным именам optShort и optFull. Не определяйте действие по случайно отредактированному видимому тексту.

Как проверить группу на форме

Переключатели одной группы: выбран «Полный», «Краткий» выключен.
Переключатели одной группы: выбран «Полный», «Краткий» выключен.

Сначала щёлкните один вариант, затем другой. Если отметка не снимается у первого, принадлежность группе настроена неверно.

Проверка перед рабочим запуском

  • Оба варианта находятся в одном Frame.
  • Выбрать можно только один режим.
  • Есть значение по умолчанию.
  • Отсутствие выбора обрабатывается отдельно.

Сначала выполните пример на учебной копии с указанными именами листов и диапазонами. Сравните исходные данные и результат, затем сохраните проверенный вариант процедуры.

Продолжить изучение: Select Case в VBA: выбор действия по значению, CheckBox в VBA: логическое значение на форме, CommandButton в UserForm: обработчик нажатия.

Разберитесь с макросами вместе с преподавателем

На занятии вы записываете действия, читаете код и проверяете результат на небольшом примере. Преподаватель подберёт задания под ваш уровень и поможет понять связь между командами VBA и изменениями в книге.

Начните с бесплатного вводного урока: 45 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.

Записаться на бесплатный урок