製品マスタの一覧画面です。図番検索と取引先名検索の2条件を組み合わせて絞り込みができます。検索コンボボックスに入力するたびにリストがリアルタイムで絞り込まれる設計です。
製品リスト画面の構成
メインメニューから製品マスタボタンで起動します。2条件での検索・並び替え・詳細表示・新規登録をこの画面から一括して操作できます。
フォームビュー全体
画面の概要
画面の概要
| 項目 | 内容 |
|---|---|
| 図番検索 | 図番で絞り込むコンボボックス。部分一致で検索。図番列のダブルクリックで値が転写される |
| 取引先名検索 | 取引先名(略称)で絞り込むコンボボックス。部分一致で検索。取引先名列のダブルクリックで値が転写される |
| 再検索ボタン | 全検索条件をNullにクリアして全件表示に戻す |
| リスト(サブフォーム) | 図番・品名・コード・取引先名・単価・在庫数・在庫更新日・各課チェックを1行で表示 |
| 図番並び替え(▲▼) | 図番列のヘッダーに配置。クリックで昇順・降順を切り替え。検索絞り込み後も使用可能 |
| 取引先名並び替え(▲▼) | 取引先名列のヘッダーに配置。クリックで昇順・降順を切り替え。検索絞り込み後も使用可能 |
| 詳細ボタン | 選択行の全情報を詳細フォームにポップアップ表示 |
| 新規登録ボタン | 新規登録フォームを開く。管理者ログイン時のみ使用可能 |
| 件数 | フッターに常時表示。絞り込み結果と連動して更新 |
| 閉じるボタン | フォームを閉じる |
デザインビューで見る仕組み
フォームの構造とプロパティ設定を確認します。
デザインビュー全体
デザインビューの概要
デザインビューの概要
| 項目 | 設定内容 |
|---|---|
| レコードソース | 空欄(非連結フォーム) |
| 検索エリア | 図番検索・取引先名検索の2つのコンボボックスを横並びで配置 |
| サブフォーム | F10製品リストサブを埋め込み |
| フォームフッター | 件数・新規登録・閉じるボタンを配置 |
クエリ:Q10製品リストサブの構成
サブフォームのレコードソースになるクエリです。T10製品MとT05取引先Mを取引先コードで結合し、2条件の絞り込みを処理します。各検索条件が空欄のときは全件表示、入力があれば入力値で絞り込まれます。
クエリデザインビュー(一部)
クエリの概要
クエリの概要
| 項目 | 内容 |
|---|---|
| クエリ名 | Q10製品リストサブ |
| 種別 | 選択クエリ |
| テーブル | T10製品M、T05取引先M |
| 結合 | T10製品M.取引先コード = T05取引先M.取引先コード |
Q10製品リストサブ フィールド構成
Q10製品リストサブ フィールド構成
| フィールド | テーブル | 並べ替え | 抽出条件 | 内容 |
|---|---|---|---|---|
| 図番ID | T10製品M | |||
| 親図番ID | T10製品M | |||
| 図番 | T10製品M | 昇順 | Is Null Or Like “*” & [Forms]![F10製品リスト]![図番検索] & “*” | 図番検索と連動。部分一致 |
| 品名 | T10製品M | |||
| 取引先コード | T10製品M | |||
| 略称 | T05取引先M | 昇順 | Is Null Or Like “*” & [Forms]![F10製品リスト]![取引先検索] & “*” | 取引先名検索と連動。部分一致 |
| 単価 | T10製品M | |||
| 在庫数 | T10製品M | |||
| 在庫更新日 | T10製品M | |||
| 成形課〜加工フォーキャスト | T10製品M | 各課・フォーキャストのYes/No列 | ||
| ID | T10製品M | カレント行色変えに使用 |
2条件同時絞り込みの設計
図番検索と取引先名検索の2条件を同時に機能させる設計です。それぞれの検索コンボボックスの更新後処理に再クエリを設定しているため、1つ入力するたびにリストが即座に絞り込まれます。たとえば取引先名検索で「鈴木製作所」を選んだ上で図番検索に「A」と入力するだけで、その取引先のA含む図番だけに絞り込めます。再検索ボタンを押せば全条件がNullになり全件表示に戻るため、絞り込み解除もワンタッチです。
各コントロールの設定
検索コンボボックス(2条件)
図番検索・取引先名検索の2つのコンボボックスです。1つ入力するたびに再クエリが実行され、リストがリアルタイムで絞り込まれます。2つとも空欄のときは全件表示になります。各検索コンボボックスの更新後処理にM99共通の再クエリサブマクロを設置しています。
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リスト |
| コントロール | 図番検索・取引先名検索(2つ) |
| イベント | 更新後処理 |
| 呼び出し元 | M99共通 > サブマクロ:再クエリ |
並び替えボタン(▲▼)
図番列・取引先名列のヘッダーにそれぞれ▲▼ボタンを配置しています。▲で昇順、▼で降順に切り替わります。検索で絞り込んだ状態でも並び替えが機能するため、特定取引先で絞り込んだ後に図番順で確認するといった操作がスムーズにできます。並び替えはM99共通マクロに集約しており、他のフォームでも使い回せます。
サブマクロ:図番昇順
- サブマクロのテキスト表示
-
サブマクロ:図番昇順 並べ替えの設定 並べ替え [図番] コントロール名 (空欄) マクロの中止 サブマクロの最後
マクロの概要
| 処理 | 内容 |
|---|---|
| 並べ替えの設定 | 並べ替え:[図番] コントロール名:空欄 |
サブマクロ:図番降順
- サブマクロのテキスト表示
-
サブマクロ:図番降順 並べ替えの設定 並べ替え [図番] DESC コントロール名 (空欄) マクロの中止 サブマクロの最後
マクロの概要
| 処理 | 内容 |
|---|---|
| 並べ替えの設定 | 並べ替え:[図番] DESC コントロール名:空欄 |
サブマクロ:取引先名昇順
- サブマクロのテキスト表示
-
サブマクロ:取引先名昇順 並べ替えの設定 並べ替え [略称] コントロール名 (空欄) マクロの中止 サブマクロの最後
マクロの概要
| 処理 | 内容 |
|---|---|
| 並べ替えの設定 | 並べ替え:[略称] コントロール名:空欄 |
サブマクロ:取引先名降順
- サブマクロのテキスト表示
-
サブマクロ:取引先名降順 並べ替えの設定 並べ替え [略称] DESC コントロール名 (空欄) マクロの中止 サブマクロの最後
マクロの概要
| 処理 | 内容 |
|---|---|
| 並べ替えの設定 | 並べ替え:[略称] DESC コントロール名:空欄 |
マクロの設置場所(4つ共通)
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リスト |
| コントロール | ▲▼ボタン(図番・取引先名それぞれ) |
| イベント | クリック時 |
| 呼び出し元 | M99共通 > サブマクロ:図番昇順/図番降順/取引先名昇順/取引先名降順 |
ダブルクリック転写(図番・取引先名)
図番列・取引先名列のラベルにはWマークが付いています。リスト上の任意の行で図番または取引先名をダブルクリックすると、その値が対応する検索コンボボックスに転写され、即座に絞り込みが実行されます。
サブマクロ:図番転写
- サブマクロのテキスト表示
-
サブマクロ:図番転写 値の代入 アイテム = [Forms]![F10製品リスト]![図番検索] 式 = [Forms]![F10製品リスト]![F10製品リストサブ]![図番] コントロールの移動 コントロール名 閉じる 再クエリ コントロール名 (空欄) マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | 値の代入 | サブフォームの図番の値を図番検索コンボボックスに転写 |
| 2 | コントロールの移動 | 閉じるボタンにフォーカスを移動 |
| 3 | 再クエリ | リストを即座に更新して絞り込みを実行 |
サブマクロ:取引先名転写
- サブマクロのテキスト表示
-
サブマクロ:取引先名転写 値の代入 アイテム = [Forms]![F10製品リスト]![取引先検索] 式 = [Forms]![F10製品リスト]![F10製品リストサブ]![略称] コントロールの移動 コントロール名 閉じる 再クエリ コントロール名 (空欄) マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | 値の代入 | サブフォームの略称の値を取引先名検索コンボボックスに転写 |
| 2 | コントロールの移動 | 閉じるボタンにフォーカスを移動 |
| 3 | 再クエリ | リストを即座に更新して絞り込みを実行 |
マクロの設置場所(2つ共通)
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リストサブ |
| コントロール | 図番・略称 |
| イベント | ダブルクリック時 |
| 呼び出し元 | M10製品 > サブマクロ:図番転写/取引先名転写 |
リスト上の図番または取引先名をダブルクリックするだけで、その値が検索コンボボックスに転写されてリストが即座に絞り込まれます。
特に威力を発揮するのが取引先名での絞り込みです。「この会社の図番をまとめて確認したい」と思ったとき、検索窓に会社名を入力し直す手間なく、リスト上の取引先名をダブルクリックするだけでその会社の図番だけが一覧表示されます。製品マスタは取引先ごとに管理している図番が多いため、この操作ひとつで作業効率が大きく変わります。
図番検索でも同様に機能します。似た図番が複数ある場合に目当ての行の図番をダブルクリックすれば、その図番だけにピンポイントで絞り込めます。Wマークはこの「ダブルクリックで転写できる列」を示すサインです。
なお転写後はコントロールのフォーカスが閉じるボタンに移動してから再クエリが実行されます。ダブルクリック後にサブフォーム側にフォーカスが残ったまま再クエリが走ると意図しない挙動が起きるため、フォーカスを安全な場所に逃がしてから更新する設計です。
カレント行の色変え
選択中の行の背景色が変わり、どの行を操作しているかが一目でわかります。条件付き書式と行色マクロの組み合わせで実現しています。
M99共通 サブマクロ:行色
マクロの概要
| 処理 | 内容 |
|---|---|
| 値の代入 | IDの値を行色コントロールにコピー。条件付き書式の条件が成立してカレント行の色が変わる |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リストサブ |
| コントロール | フォーム全体 |
| イベント | レコード移動時 |
| 呼び出し元 | M99共通 > サブマクロ:行色 |
Accessのフォームにおける「色」は、単なるデザイン要素ではありません。オペレーターが今どこにいて何をすべきかを直感的に伝えるための「重要なナビゲーション」だと考えています。 画面を開いた瞬間に「新規登録」か「編集」かを色で感じ取り、無[…]
サブフォームの構成(F10製品リストサブ)
Q10製品リストサブを元にフォームウィザードで作成します。表示項目は図番・品名・コード・取引先名・単価・在庫数・在庫更新日・各課チェックの1行レイアウトです。
主なプロパティ設定
| プロパティ | 設定値 |
|---|---|
| 移動ボタン | いいえ |
| コントロールボックス | いいえ |
| 閉じるボタン | いいえ |
| 追加の許可 | いいえ |
| レコード移動時 | M99共通.行色 |
詳細部のプロパティ設定
| プロパティ | 設定値 |
|---|---|
| 背景色 | 背景1, 暗め5% |
| 代替背景色 | 背景1 |
各コントロールの共通プロパティ
| プロパティ | 設定値 |
|---|---|
| 高さ | 0.6cm |
| 背景色 | 背景1, 暗め5% |
| フォント名 | メイリオ |
| フォントサイズ | 9 |
| 編集ロック | はい |
一覧表示フォームの土台。単票・ポップアップと違い、クエリを挟む設計が前提になる。ウィザードで素早く形を作り、プロパティで仕上げるのが基本の流れ。 テンプレート(サブフォーム)の完成形 テンプレート(サブフォーム)を実装し[…]
詳細ボタン
選択行の全情報を詳細フォームにポップアップ表示します。詳細ボタンのマクロ構成は詳細ページで詳しく解説しています。詳細ページは基本情報・成形課・材料課・加工課・印刷課・品証課・営業課・生産管理の8つのタブページで構成されています。詳細情報の確認と新規登録や編集作業が行える設計になってます。
製品マスタの詳細画面です。製品リストの詳細ボタンから起動し、図番の基本情報を参照できます。成形課・材料課・加工課・印刷課・品証課・営業課・生産管理の各課情報はタブ風ボタンで切り替えて表示します。 基本情報画面の構成 製品リストの詳細[…]
新規登録ボタン
新規登録フォームをポップアップで開きます。製品マスタの登録・編集は管理者のみ可能な設計のため、新規登録ボタンは通常ログイン時は使用不可(グレーアウト)になっています。管理者でログインした場合のみボタンが有効になり、新規登録フォームを開けます。
フォームビュー(管理者ログイン時)
管理者ログイン時は新規登録ボタンが有効になります。この切り替えはメインメニューから製品リストを開くマクロの中で処理されています。
サブマクロ:製品マスタ(メインメニュー)
- サブマクロのテキスト表示
-
サブマクロ:製品マスタ フォームを開く(F10製品リスト, フォームビュー, , , , 標準) If [Forms]![F00メインメニュー]![権限]=2 Then 値の代入([Forms]![F10製品リスト]![登録].[Enabled], True) If 文の最後 マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | フォームを開く | F10製品リストをフォームビューで開く |
| 2 | If 条件分岐 | [Forms]![F00メインメニュー]![権限]=2(管理者)の場合のみ次の処理を実行 |
| 3 | 値の代入 | [Forms]![F10製品リスト]![登録].[Enabled] = True → 新規登録ボタンを有効化 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F00メインメニュー |
| コントロール | 製品マスタボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:製品マスタ |
サブマクロ:新規開く
- サブマクロのテキスト表示
-
サブマクロ:新規開く フォームを開く(F10製品新規, フォームビュー, , , , 標準) マクロの中止 サブマクロの最後
マクロの概要
| 処理 | 内容 |
|---|---|
| フォームを開く | F10製品新規をフォームビューで開く |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リスト |
| コントロール | 新規登録ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品新規 > サブマクロ:新規開く |
製品マスタは登録・編集を管理者に限定しています。通常ユーザーには新規登録ボタンがグレーアウトされて表示されるため、誤操作による登録を防げます。権限チェックはフォームを開くマクロの中でIf条件分岐として処理されており、メインメニューの権限フィールドの値が2(管理者)のときだけボタンのEnabledをTrueに切り替えます。フォームのプロパティではなくマクロで動的に制御する設計のため、ログイン者によって自動的に操作権限が変わります。
製品マスタの新規登録は管理者のみが実行できます。基本情報・営業課情報・工程情報をこのフォームで一括登録し、関連する課のテーブルに図番IDを自動追加することで各課担当者が課別情報を登録するベースが完成します。仕入先製品マスタへの登録もこのフォ[…]
再検索ボタン
2つの検索コンボボックスをNullにクリアして全件表示に戻します。
サブマクロ:再検索
- サブマクロのテキスト表示
-
サブマクロ:再検索 値の代入 アイテム = [Forms]![F10製品リスト]![図番検索] 式 = Null 値の代入 アイテム = [Forms]![F10製品リスト]![取引先検索] 式 = Null 再クエリ() マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | 値の代入 | 図番検索をNullにクリア |
| 2 | 値の代入 | 取引先名検索をNullにクリア |
| 3 | 再クエリ | フォーム内の全クエリを更新して全件表示に戻す |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リスト |
| コントロール | 再検索ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:再検索 |
閉じるボタン
M99共通 サブマクロ:閉じる
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品リスト |
| コントロール | 閉じるボタン |
| イベント | クリック時 |
| 呼び出し元 | M99共通 > サブマクロ:閉じる |
フォームごとに同じ処理のマクロを個別に作ると、マクロの数が際限なく増えて管理が大変になります。M99共通マクロはどのフォームでも使い回せる処理をサブマクロとして一箇所に集約したものです。コントロール名を統一しておくことでフォームを問わず同じ[…]
まとめ
製品リストは図番検索と取引先名検索の2条件を組み合わせた絞り込み設計が核になっています。T10製品MとT05取引先Mをクエリで結合することで、コードだけでなく取引先名でも直感的に絞り込めます。ダブルクリック転写・並び替えボタン・管理者制御の3つの設計が組み合わさることで、日常的な参照から管理者による登録作業まで、この画面だけで完結する運用を実現しています。
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。