← コード一覧へ戻る
実務UserForm

オプションボタンの状態を判定する(2):Controlsを調べる

OptionButtonの数が増えた場合に備え、Controlsを順に調べて選択されている項目のCaptionを取得します。

実行前に確認

  • 異なる型のコントロールにはGroupNameがないので、TypeOfの判定を別のIfにしています。VBAのAndは短絡評価ではありません。
  • 添付目次の番号に対応させた独自の実装例です。書籍本文の方法を再現・確認したものではありません。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private Sub UserForm_Initialize()
    Me.OptionButton1.Caption = "小"
    Me.OptionButton2.Caption = "中"
    Me.OptionButton3.Caption = "大"
    Me.OptionButton1.GroupName = "Size"
    Me.OptionButton2.GroupName = "Size"
    Me.OptionButton3.GroupName = "Size"
    Me.OptionButton2.Value = True
    Me.CommandButton1.Caption = "サイズを確認"
End Sub

Private Sub CommandButton1_Click()
    Dim ctrl As MSForms.Control
    Dim optionItem As MSForms.OptionButton
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.OptionButton Then
            Set optionItem = ctrl
            If optionItem.GroupName = "Size" Then
                If optionItem.Value Then
                    MsgBox "選択サイズ:" & optionItem.Caption
                    Exit Sub
                End If
            End If
        End If
    Next ctrl
    MsgBox "サイズが未選択です。"
End Sub

図で見る対象のボタンを探す

イメージ図

OptionButtonの数が増えた場合に備え、Controlsを順に調べて選択されている項目のCaptionを取得します。

  1. 走査

    Controlsを1個ずつ調べる

  2. 絞る

    OptionButtonかつSizeグループ

  3. 取得

    TrueのCaptionを表示

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからOptionButton1、OptionButton2、OptionButton3、CommandButton1をフォーム本体へ各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 そのまま確認ボタンを押し、次に「大」を選んで押します。

  5. 5

    最初は「選択サイズ:中」、次は「選択サイズ:大」と表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)