こんにちは、なかぜんです。
Accessでのフォーム設計、使いやすさにこだわってますか?
「データが多くて表示がごちゃごちゃ」「状況に応じて見せたい項目が違う」――そんな悩み、実は多くの現場で聞きます。
今回はそんな悩みを解決する「サブフォーム×条件表示」というカスタムUIテクニックを紹介します。
上手に使えば、画面がスッキリ!ユーザーの迷いも減って、業務効率がグッとアップしますよ。
1. サブフォーム×条件表示って何?
条件によってサブフォームを切り替える
Accessでは、サブフォームを使って関連データを一覧表示できます。でも、条件に応じて「表示・非表示」や「中身を切り替える」といった動きは、ちょっと工夫が必要です。
用途の一例
- 顧客区分によって、表示する項目が変わる
- ステータスによって、入力可能な欄を制限する
- 特定の処理モードでのみサブフォームを表示
つまり、「見せたいときだけ見せる」――これがUIの基本でもあり、業務の使い勝手を左右するポイントなのです。
2. 基本の実装パターン
① コントロールのVisibleプロパティで制御
最もシンプルな方法は、Me.サブフォーム名.Visible = True/False
で制御することです。
' 顧客区分によってサブフォームを切り替え
Private Sub 顧客区分_AfterUpdate()
Select Case Me.顧客区分
Case "法人"
Me.sfrm_法人情報.Visible = True
Me.sfrm_個人情報.Visible = False
Case "個人"
Me.sfrm_法人情報.Visible = False
Me.sfrm_個人情報.Visible = True
Case Else
Me.sfrm_法人情報.Visible = False
Me.sfrm_個人情報.Visible = False
End Select
End Sub
ポイント:AfterUpdateイベントで実行することで、フォーム変更後に即時反映されます。
② SourceObjectで動的に差し替え
より柔軟に表示内容を変えたい場合は、SourceObject
プロパティを使って差し替える方法が便利です。
' 処理区分に応じて、サブフォームの中身を差し替え
Private Sub 処理区分_AfterUpdate()
Select Case Me.処理区分
Case "受注"
Me.sfrm_表示用.SourceObject = "F_受注一覧"
Case "出荷"
Me.sfrm_表示用.SourceObject = "F_出荷一覧"
Case "請求"
Me.sfrm_表示用.SourceObject = "F_請求一覧"
Case Else
Me.sfrm_表示用.SourceObject = ""
End Select
End Sub
ひとつのサブフォーム枠を使い回すことで、画面がシンプルになります。
3. UI設計上の工夫と注意点
① レイアウトで混乱を避ける
サブフォームのサイズや位置は、表示のたびに変わらないように設計しておきましょう。非表示にする代わりに空白を残すなどの工夫も有効です。
② 初期状態をしっかり制御する
フォームのLoad
イベント内で初期表示の設定を必ず行っておきましょう。
Private Sub Form_Load()
Call 顧客区分_AfterUpdate
End Sub
③ コントロールの名前間違い
VisibleやSourceObjectを操作する対象は、コントロール名(=サブフォームを貼り付けた枠の名前)であることに注意。
例:フォーム「F_受注一覧」をサブフォームにした場合でも、
- Me.F_受注一覧.Visible → ×
- Me.sfrm_表示用.Visible → ○
4. 応用編:ナビゲーションUIと組み合わせる
たとえば、以下のような「カテゴリ別ナビゲーションボタン」と組み合わせると、疑似的なメニューUIが構築できます。
Private Sub btn_売上_Click()
Me.sfrm_表示用.SourceObject = "F_売上"
End Sub
Private Sub btn_在庫_Click()
Me.sfrm_表示用.SourceObject = "F_在庫"
End Sub
タブ制御やナビゲーションフォームでは制限の多い場合、この方式なら柔軟に構成可能です。
5. よくあるトラブルと対処法
- SourceObjectのフォームが開かない → 「F_売上」など、名前のスペルミスをチェック
- レコードソースが空 → 元フォームのレコードソースが正しく設定されているか確認
- フォーム間のリンクが失敗する → リンクマスターフィールド/リンクチャイルドフィールドを見直す
これらをチェックするだけで、かなりの不具合を未然に防げます。
6. まとめ:業務効率をUIから支える
今回は「サブフォーム×条件表示」というテーマで、実務に役立つUIの設計術をご紹介しました。
- サブフォームのVisibleプロパティで表示・非表示を切り替える
- SourceObjectで動的に表示内容を変える
- ナビゲーションとの組み合わせで、カスタムメニューも可能
こういった工夫を積み重ねることで、業務に本当にフィットするUIを作れるようになります。
それでは、またお会いしましょう!
Access業務効率化の味方、なかぜんでした。
