こんにちは、なかぜんです。
「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」を取り入れてみてくださいね。
では、また次回の記事でお会いしましょう!なかぜんでした。
