スポンサーリンク

Accessで作る!メニューを自由にカスタマイズできるナビゲーションUI構築法

スポンサーリンク
Access
スポンサーリンク

こんにちは、なかぜんです。

「Accessのナビゲーションが使いづらい…」「ユーザーごとに見せたいメニューを変えたい…」そんな悩みをお持ちではないでしょうか?

実務でAccessを使い込んでいくと、標準のナビゲーションウィンドウでは限界を感じる場面も多いですよね。

今回は、ユーザーごとに表示を切り替えられる“カスタマイズ可能なナビゲーションUI”の作り方をご紹介します。

業務アプリでの活用にもぴったりなこの技、ぜひあなたのシステムにも取り入れてみてください。

スポンサーリンク

ナビゲーションUIとは?そしてなぜカスタマイズ?

Access標準のナビゲーションの限界

Accessには「ナビゲーションウィンドウ」がありますが、これは開発者向けで、業務現場では非表示にしている方も多いはず。

使いやすさ・視認性・制御の柔軟性などの点で物足りなさを感じることがあります。

カスタムナビゲーションでできること

  • ユーザーによってメニューを切り替える
  • 権限に応じてボタンを非表示にする
  • 使いやすく配置されたボタンで直感的な操作を実現

こういったUIを自前で構築することで、ユーザー満足度がグッと上がります。

基本構成と画面イメージ

今回のナビゲーションUIは、以下のような構成を想定しています:

  • メイン画面:連続フォーム形式でメニュー一覧を表示
  • ボタン:各ボタンをクリックすると指定のフォームやレポートが開く
  • ユーザーごとの制御:権限に応じて表示を調整

▼完成イメージ(説明用)

[ ユーザー別ナビゲーション ]
-----------------------------------
📋 顧客一覧
📦 商品マスタ
🛒 受注入力
📊 月次集計
🔒 管理者設定 ← 管理者のみ表示

VBAでナビゲーションUIを構築する手順

ステップ1:メニュー定義テーブルを作る

まず、どのメニューを誰に表示するかを定義するテーブルを作ります。


T_メニュー定義
-----------------------
ID(AutoNumber)
表示名(Text)
フォーム名(Text)
アイコン(Text) ※ optional
対象ユーザー区分(Text) 例:"ALL", "ADMIN", "STAFF"

このテーブルをもとに、ログインユーザーに合ったメニューだけを動的に生成します。

ステップ2:ナビゲーションフォームを作成

新規フォームを作成し、連続フォームとして「T_メニュー定義」をレコードソースに設定します。

各レコードに「表示名」を表示し、隣に「起動ボタン」を配置しましょう。

ステップ3:起動ボタンにコードを記述

Private Sub cmdOpenForm_Click()
    Dim strForm As String
    strForm = Me!フォーム名

    If CurrentProject.AllForms(strForm).IsLoaded = False Then
        DoCmd.OpenForm strForm
    Else
        MsgBox strForm & " はすでに開かれています。", vbInformation
    End If
End Sub

解説:
「フォーム名」フィールドに書かれたフォームを動的に開きます。
すでに開いている場合は通知を表示する設計にしています。

ステップ4:ユーザーごとの表示制御

フォームの「レコードソース」に以下のようなWHERE句を追加し、ユーザー種別でフィルタします。


SELECT * FROM T_メニュー定義
WHERE 対象ユーザー区分='ALL' OR 対象ユーザー区分=Forms!F_Login!ユーザー区分

ログイン情報を取得済みであれば、ログイン時にユーザー種別をフォームに格納しておき、メニュー表示時に活用できます。

よくあるミスと注意点

  • フォーム名のタイプミス:DoCmd.OpenForm で失敗する原因No.1。マスタデータの正確性が重要。
  • ユーザー区分の一致チェック不足:全角/半角や大文字/小文字の違いで表示されないケースがあるので注意。
  • フォームが連続フォームになっていない:表示形式を「連続フォーム」にしないと一覧で表示されません。

応用テクニック:アイコン付きメニューやグルーピング

アイコン付きナビゲーション

アイコンフィールドを定義し、Imageコントロールでアイコンを表示することで、見た目を向上できます。


Me.imgIcon.Picture = "C:\Icons\" & Me!アイコン & ".png"

カテゴリごとのグループ化

「カテゴリ」フィールドを追加して、グループヘッダーで分類すると、大規模なメニューでも視認性が高まります。

まとめ:学べたことと次のステップ

今回は、Accessで使える「カスタマイズ可能なナビゲーションUI」の作り方をご紹介しました。

  • 標準ナビではできない柔軟な制御が可能になる
  • ユーザー区分に応じた表示切替ができる
  • 実務でも即活用できる再利用性の高い仕組み

こうしたUIの構築は、単に“かっこよく”なるだけではありません。
現場での操作ミスを減らしたり、ユーザー満足度を高めたりと、業務効率化にも大きく貢献します。

次のステップ

今回の技術を応用して、以下のようなことにもチャレンジしてみてください。

  • ログインユーザーごとのダッシュボード画面
  • レポートメニューとフォームメニューの分離
  • 非同期での処理実行(待機画面との連携)

ぜひ、あなたのAccessアプリにも「あなたらしいナビゲーションUI」を取り入れてみてくださいね。

では、また次回の記事でお会いしましょう!なかぜんでした。