【VBA】シート上のオプションボタンで選択された項目を判定する方法

目次

はじめに

Excelのシート上で、ユーザーに複数の選択肢から一つだけを選ばせる場合、「フォームコントロール」の「オプションボタン」が役立ちます。アンケートや設定シートなどで、排他的な選択を促すのに最適です。

VBAを使えば、シート上に配置された複数のオプションボタンの中から、ユーザーがどれを選択したのかを簡単に特定できます。この記事では、シート上の全てのオプションボタンをチェックし、選択されている項目のキャプション(表示テキスト)を取得するための、基本的で確実な方法を解説します。


選択されたオプションボタンを判定するVBAサンプルコード

このマクロは、シート上に配置された全てのオプションボタンをループで確認し、選択状態にあるボタンの名前(キャプション)をメッセージボックスに表示します。

完成コード

' シート上のオプションボタンで選択されている項目を取得する
Sub GetSelectedOptionButton()

    '== 変数を定義します ==
    Dim optButton As OptionButton
    Dim selectedChoiceCaption As String
    
    ' デフォルト値を「未選択」に設定
    selectedChoiceCaption = "未選択です"
    
    '== OptionButtonsコレクションで、シート上の全てのオプションボタンをループ ==
    For Each optButton In ActiveSheet.OptionButtons
        ' .Valueプロパティがオン(xlOn)かどうかを判定
        If optButton.Value = xlOn Then
            ' オンになっているボタンのキャプションを取得
            selectedChoiceCaption = optButton.Caption
            ' 選択項目が見つかったのでループを抜ける
            Exit For
        End If
    Next optButton
    
    '== 結果をメッセージボックスに表示 ==
    MsgBox "選択された項目: " & selectedChoiceCaption, vbInformation, "選択結果"

End Sub

コードの解説

For Each optButton In ActiveSheet.OptionButtons

この一行が、シート上の全てのオプションボタンをチェックするための基本構造です。

  • ActiveSheet.OptionButtons: 現在アクティブなシートに配置されている、全てのオプションボタンが含まれるコレクションです。
  • For Each ループで、このコレクションからオプションボタンオブジェクトを一つずつ optButton 変数に取り出して処理しています。

If optButton.Value = xlOn Then

オプションボタンの状態は .Value プロパティで判定します。

  • xlOn (値は 1): ボタンが選択されている(オン)状態を示します。
  • xlOff (値は -4146): ボタンが選択されていない(オフ)状態を示します。

この If 文で、オンになっているボタンを見つけています。

selectedChoiceCaption = optButton.Caption

オンになっているボタンが見つかったら、そのボタンの .Caption プロパティ(ボタンの横に表示されているテキスト)を取得し、変数に格納しています。

Exit For

オプションボタンは、同じグループ内では一つしか選択できません。そのため、選択されているボタンが一つ見つかった時点で、それ以上ループを続ける必要はありません。Exit For でループを抜けることで、処理を効率化しています。


まとめ

今回は、VBAを使ってシート上のオプションボタンの選択状態を判定する方法を解説しました。

  • シート上のオプションボタンは ActiveSheet.OptionButtons コレクションでまとめて扱える。
  • ボタンの状態は .Value プロパティ(xlOn / xlOff)で判定する。
  • ボタンの表示テキストは .Caption プロパティで取得できる。

この方法を使えば、ユーザーの選択に基づいて計算を行ったり、表示する内容を切り替えたりと、シートをよりインタラクティブに活用することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次