ExcelとAccessのスキルアップをサポートするサイトです

ExcelとAccessの学習室

【Access VBA】サブフォームをオプションボタンで切り替える方法

当ブログでは、コンボボックスでサブフォームを切り替える方法を紹介しました。

https://sys-daddy.com/access-vba-switch-subform-with-combobox/

今回は、オプションボタンを使ってサブフォームを切り替える方法を解説します。

オプションボタンを使う方法は、コンボボックスに比べユーザー側の操作感は直観的に操作しやすく、コードもシンプルなものに仕上がります。
とはいえ、状況によりうまく使い分けるのが最善の方法ですので、コンボボックスとオプションボタンの両方とも習得しておきましょう。

また、サンプルデータも準備していますので学習に活用してください。

≫ サンプルデータベース「Mst_Swtch_Example.accdb」

完成品の動作

サンプルデータベースのフォーム「F00基本マスタM_Option」を開きます。

サブフォームと5つ並んだオプションボタンが配置されています。
デフォルトで表示されているのは大分類マスタデータです。

オプションボタンの中分類を選択します。

サブフォームが中分類マスタに切り替わりました

フォーム起動後に作動するコード

以下はフォームを起動した時に作動するコードです。

Private Sub Form_Load()

    Me.RecordSelectors = False ' レコードセレクタを非表示にする
    Me.NavigationButtons = False ' 移動ボタンを非表示にする

    'データシートフォームの範囲設定
    Me.F00基本マスタDS.SourceObject = "F00大分類マスタDS"

    'オプションボタンの初期設定
    Me.分類選択.Value = 1

End Sub

このコードでは、データシートオブジェクトとオプションボタンの初期設定をしています。
オプションボタンの場合は、レイアウト作成時にマスタ名まで設定していますので、コンボボックスのようにリストを設定し直す必要はありません。
シンプルなコードで目的の動きを実現できています。

オプションボタンの操作後に作動するコード

以下はオプションボタンを操作したときに作動するコードです。

Private Sub 分類選択_BeforeUpdate(Cancel As Integer)
    
    Select Case Me.分類選択.Value
        Case 1
            Me.F00基本マスタDS.SourceObject = "F00大分類マスタDS"
        Case 2
            Me.F00基本マスタDS.SourceObject = "F00中分類マスタDS"
        Case 3
            Me.F00基本マスタDS.SourceObject = "F00小分類マスタDS"
        Case 4
            Me.F00基本マスタDS.SourceObject = "F01発注先マスタDS"
        Case 5
            Me.F00基本マスタDS.SourceObject = "F00発注者マスタDS"
    End Select

End Sub

オプショングループ「分類選択」の値で表示するデータシートを切り替えるようになっています。

まとめ

今回は、Access VBAを使い、オプションボタンでサブフォームを切り替える方法を解説しました。

コンボボックスに比べ、オプションボタンを使ったフォーム切替え機能のプログラムコードはよりシンプルです。
一方、マスタテーブルとオプションボタンを追加したい時は、VBAコードだけでなくフォームのレイアウトやプロパティの修正も必要です。

仮にマスタテーブルが大幅に増えた場合、オプションボタンを配置するスペースが無い、ということも起こりかねません。
やはり、コンボボックスかオプションボックスのどっちを使うかは、状況によりうまく使い分けるのがよいでしょうね。