取引先マスタの詳細画面です。リスト画面の詳細ボタンから起動し、取引先の全情報をタブ別に参照できます。図番マスタ一覧・受注履歴一覧のサブフォームを同一画面に設置しているため、情報量に合わせて基本情報・経理情報・配送先・リスト表示の4タブに分けた設計です。編集が必要な場合はフッターの編集ボタンから編集フォームに遷移します。
詳細画面の構成
リスト画面の詳細ボタンから起動します。4つのタブで取引先情報を参照し、編集・新規登録・閉じる操作をフォームフッターから行います。
基本情報タブ フォームビュー
画面の概要
| 項目 | 内容 |
|---|---|
| 基本情報タブ | 取引先の基本情報・図番マスタ一覧・受注履歴一覧を表示 |
| 経理情報タブ | 締め日・端数区分・銀行口座・請求書送付先を表示 |
| 配送先タブ | デフォルト配送先の参照と配送先一覧サブフォームを表示 |
| リスト表示タブ | コンボボックス絞り込み用フラグ(加工購入先・加工加工先・金型メーカー)を表示 |
| 新規登録ボタン | 新規登録フォームを開く |
| 編集ボタン | 編集フォームを開く(全タブ共通・フォームフッターに設置) |
| このページを閉じるボタン | 詳細フォームのみ閉じる |
| 取引先マスタを閉じるボタン | 取引先関連フォームを全て閉じる |
デザインビューで見る仕組み
フォームの構造とプロパティ設定を確認します。
デザインビュー(基本情報タブ)
デザインビューの概要
| 項目 | 設定内容 |
|---|---|
| フォーム名 | F05取引先リスト情報 |
| レコードソース | 空欄(非連結フォーム) |
| タブコントロール | 詳細部に設置。基本情報・経理情報・配送先・リスト表示の4タブ |
| 取引先コード | コントロールソース:=[取引先コード](転記値を表示) |
| 取引先名 | コントロールソース:=[取引先名](転記値を表示) |
| 図番マスタサブフォーム | F05取引先リスト情報図番を埋め込み |
| 受注履歴サブフォーム | F05取引先リスト情報受注サブを埋め込み |
| フォームフッター | 新規登録・編集・このページを閉じる・取引先マスタを閉じるボタンを配置 |
基本情報タブ
取引先の基本情報と図番マスタ一覧・受注履歴一覧を1画面で確認できます。図番マスタと受注履歴は取引先コードと連動したサブフォームで表示されます。
基本情報タブ フォームビュー
基本情報タブの概要
| コントロール | 内容 |
|---|---|
| 取引区分 | オプショングループで表示(参照のみ) |
| 取引先コード | リスト適用マクロで転記された値を表示 |
| 取引先名(正式名) | DLookUpで参照した値を表示 |
| 略称・フリガナ・住所系 | DLookUpで参照した値を表示 |
| 電話番号・FAX・URL | DLookUpで参照した値を表示 |
| 代表者・担当者・メモ | DLookUpで参照した値を表示 |
| 当社営業担当者・登録日・旧住所 | DLookUpで参照した値を表示 |
| 図番マスタ一覧 | F05取引先リスト情報図番サブフォーム。件数をフッターに表示 |
| 受注履歴一覧 | F05取引先リスト情報受注サブフォーム。図番・手配番号・納期・数量・単価・金額・出荷状況を表示。件数をフッターに表示 |
Q05取引先リスト情報図番サブ クエリの構成
図番マスタサブフォームのレコードソースです。T05取引先MとT10製品Mをリレーションし、詳細フォームの取引先コードと一致する図番を表示します。
Q05取引先リスト情報図番サブ クエリデザインビュー
Q05取引先リスト情報図番サブ フィールド構成
| フィールド | テーブル | 並べ替え | 内容 |
|---|---|---|---|
| 図番 | T10製品M | 昇順 | 取引先に紐づく図番を表示 |
| 図番ID | T10製品M | ||
| ID | T10製品M | カレント行色変えに使用 |
◆リンクカード:サブフォームの作り方(後日作成)
Q05取引先リスト情報受注サブ クエリの構成
受注履歴サブフォームのレコードソースです。T20受注Mから詳細フォームの取引先コードと一致する受注データを表示します。出荷状況は分納残数の状態によって「未納」「完納」「分納中」を自動判定して表示します。
Q05取引先リスト情報受注サブ クエリデザインビュー
Q05取引先リスト情報受注サブ フィールド構成
| フィールド | テーブル | 並べ替え | 内容 |
|---|---|---|---|
| 図番 | T20受注M | ||
| 手配番号 | T20受注M | ||
| 納期 | T20受注M | 降順 | |
| 数量 | T20受注M | ||
| 単価 | T20受注M | ||
| 金額:[数量]*[単価] | — | 数量と単価を掛けて金額を計算 | |
| 出荷状況:IIf([分納残数]=[数量],”未納”,IIf([分納残数]=0,”完納”,IIf([分納残数]<>[数量],”分納中”))) | — | 分納残数の状態で3段階判定 | |
| 受注日 | T20受注M | ||
| ID | T20受注M | ||
| 取引先コード | T20受注M | 抽出条件:[Forms]![F05取引先リスト情報]![取引先コード] |
◆リンクカード:サブフォームの作り方(後日作成)
経理情報タブ
締め日・端数金額区分・銀行口座情報・請求書送付先を1タブにまとめています。
経理情報タブ フォームビュー
経理情報タブの概要
| コントロール | 内容 |
|---|---|
| 取引先コード・取引先名 | 全タブ共通で表示 |
| 締め日 | オプショングループで表示(5日・10日・15日・20日・25日・末日) |
| 端数金額区分 | オプショングループで表示(四捨五入・切り捨て・切り上げ) |
| 端数金額区分仕入 | オプショングループで表示(四捨五入・切り捨て・切り上げ) |
| 適格事業者番号 | テキスト表示 |
| 銀行コード・銀行名 | テキスト表示 |
| 支店コード・支店名 | テキスト表示 |
| 口座種別・口座番号・口座名義 | テキスト表示 |
| 郵便番号〜電話番号 | 請求書送付先の参照表示 |
配送先タブ
デフォルト配送先の参照と配送先一覧を1タブで確認できます。上部にT05取引先MのデフォルトフラグがTrueの配送先をDLookUpで参照表示し、下部のサブフォームでT05取引先M配送先の全件をリスト表示します。
配送先タブ フォームビュー
配送先タブの概要
| コントロール | 内容 |
|---|---|
| 取引先コード・取引先名 | 全タブ共通で表示 |
| 郵便番号〜電話番号(上部) | T05取引先MのデフォルトフラグTrueの配送先をDLookUpで参照表示 |
| 配送先サブフォーム | F05取引先編集配送先サブ。デフォルトフラグ・住所を一覧表示 |
Q05取引先配送先サブ クエリの構成
配送先サブフォームのレコードソースです。T05取引先M配送先から詳細フォームの取引先コードと一致する配送先を全件表示します。
Q05取引先配送先サブ クエリデザインビュー
Q05取引先配送先サブ フィールド構成
| フィールド | テーブル | 並べ替え | 抽出条件 | 内容 |
|---|---|---|---|---|
| デフォルト | T05取引先M配送先 | 昇順 | デフォルトフラグ。✔で優先配送先を識別 | |
| ID | T05取引先M配送先 | |||
| 住所:[配送先郵便番号] & [配送先都道府県] & … | — | 郵便番号〜電話番号を結合して1フィールドに表示 | ||
| 登録日 | T05取引先M配送先 | 昇順 | 非表示 | |
| 取引先コード | T05取引先M配送先 | [Forms]![F05取引先リスト情報]![取引先コード] | 詳細フォームの取引先コードで絞り込み |
◆リンクカード:サブフォームの作り方(後日作成)
リスト表示タブ
製品マスタや加工マスタのコンボボックスに表示する取引先を絞り込むためのフラグ管理タブです。チェックボックスのON/OFFで各マスタへの表示を制御します。
リスト表示タブ フォームビュー
リスト表示タブの概要
| コントロール | 内容 |
|---|---|
| 加工購入先表示 | チェックボックス。製品マスタ加工の購入先コンボに表示するか制御 |
| 加工加工先表示 | チェックボックス。製品マスタ加工の加工先コンボに表示するか制御 |
| 金型メーカー表示 | チェックボックス。製品成形マスタの金型メーカーコンボに表示するか制御 |
※部署からの要請によりコントロールを増やすという拡張性があるタグになります。
各ボタンのマクロ
詳細ボタン(取引先リストから詳細への遷移)
リスト画面の詳細ボタンを押すと詳細フォームが開き、選択行の取引先コードを起点にDLookUpで全フィールドを参照表示します。
サブマクロ:リスト適用マクロ
- サブマクロのテキスト表示
-
サブマクロ:リスト適用 フォームを開く (F05取引先リスト情報, フォームビュー, , , , 標準) 値の代入 ([Forms]![F05取引先リスト情報]![取引先コード], [Forms]![F05取引先リスト検索]![F05取引先リスト検索サブ]![取引先コード]) 値の代入 ([Forms]![F05取引先リスト情報]![取引区分], DLookUp("取引区分","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![取引先名], DLookUp("取引先名","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![略称], DLookUp("略称","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![フリガナ], DLookUp("フリガナ","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![郵便番号], DLookUp("郵便番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![都道府県], DLookUp("都道府県","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![住所1], DLookUp("住所1","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![住所2], DLookUp("住所2","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![電話番号], DLookUp("電話番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![FAX], DLookUp("FAX","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![URL], DLookUp("URL","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![代表者], DLookUp("代表者","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![担当者], DLookUp("担当者","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![メモ], DLookUp("メモ","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![登録日], DLookUp("登録日","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![営業担当者], DLookUp("営業担当者","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![締め日], DLookUp("締め日","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![端数金額区分], DLookUp("端数金額区分","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![端数金額区分仕入], DLookUp("端数金額区分仕入","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![請求書郵便番号], DLookUp("請求書郵便番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![請求書都道府県], DLookUp("請求書都道府県","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![請求書住所1], DLookUp("請求書住所1","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![請求書住所2], DLookUp("請求書住所2","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![請求書部署], DLookUp("請求書部署","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![請求書電話番号], DLookUp("請求書電話番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![配送先郵便番号], DLookUp("配送先郵便番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![配送先都道府県], DLookUp("配送先都道府県","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![配送先住所1], DLookUp("配送先住所1","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![配送先住所2], DLookUp("配送先住所2","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![配送先部署], DLookUp("配送先部署","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![配送先電話番号], DLookUp("配送先電話番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![銀行コード], DLookUp("銀行コード","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![銀行名], DLookUp("銀行名","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![支店コード], DLookUp("支店コード","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![支店名], DLookUp("支店名","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![口座種別], DLookUp("口座種別","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![口座番号], DLookUp("口座番号","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![口座名義], DLookUp("口座名義","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![旧住所], DLookUp("旧住所","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![加工購入先表示], DLookUp("加工購入先表示","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![加工加工先表示], DLookUp("加工加工先表示","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 値の代入 ([Forms]![F05取引先リスト情報]![金型メーカー表示], DLookUp("金型メーカー表示","T05取引先M","[取引先コード]=[Forms]![F05取引先リスト情報]![取引先コード] ")) 再クエリ () マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | フォームを開く | F05取引先リスト情報をフォームビューで開く |
| 2 | 値の代入(取引先コード) | リストのサブフォームで選択中の取引先コードを詳細フォームに転記 |
| 3〜 | 値の代入(全フィールド) | 転記された取引先コードを条件にDLookUpで全フィールドを参照して表示 |
| 最終 | 再クエリ | サブフォームを最新状態に更新 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F05取引先リスト検索サブ |
| コントロール | 詳細ボタン |
| イベント | クリック時 |
| 呼び出し元 | M05取引先 > サブマクロ:リスト適用 |
DLookUpで非連結フォームに全フィールドを表示する設計
詳細フォームは非連結フォームです。リストから渡された取引先コードを起点に、全フィールドをDLookUpで1件ずつ参照して表示します。レコードソースにテーブルを直接バインドしないため、フォームを開いても編集モードにならず誤操作によるデータ書き換えのリスクがありません。参照専用の画面として使い、編集が必要な場合のみ編集ボタンから専用フォームに遷移する設計です。フィールド数が多いほどマクロの行数は増えますが、「見るだけ」と「編集する」を明確に分離できる点で運用上のメリットが大きい設計です。
編集ボタン(詳細から編集への遷移)
詳細フォームのフッターに設置された編集ボタンです。全タブ共通で機能します。編集フォームを開いた後、詳細フォームの取引先コードを編集フォームの検索コントロールに転記し、編集表示マクロを呼び出して対象取引先の全情報を表示します。編集表示マクロの詳細は編集ページで解説します。
サブマクロ:編集開くマクロ
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | フォームを開く | F05取引先編集をフォームビューで開く |
| 2 | 値の代入 | 詳細フォームの取引先コードを編集フォームの検索コントロールに転記 |
| 3 | マクロの実行 | M05取引先.編集表示を呼び出して対象取引先の全情報を表示 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F05取引先リスト情報 |
| コントロール | 編集ボタン |
| イベント | クリック時 |
| 呼び出し元 | M05取引先 > サブマクロ:編集開く |
取引先マスタの編集フォームの設計と実装を解説します。フリガナ検索で対象取引先を呼び出し、DLookUpで全フィールドを表示した上で編集・更新する設計です。住所変更時の旧住所保存・配送先の追加登録・更新クエリによるテーブル更新までの一連のマク[…]
このページを閉じるボタン・取引先マスタを閉じるボタン
新規登録ページと同じマクロを流用しています。このページを閉じるボタンはM99共通の閉じるマクロ、取引先マスタを閉じるボタンはM05取引先の取引先全て閉じるマクロを使用します。
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F05取引先リスト情報 |
| コントロール | このページを閉じるボタン |
| イベント | クリック時 |
| 呼び出し元 | M99共通 > サブマクロ:閉じる |
| 項目 | 内容 |
|---|---|
| フォーム | F05取引先リスト情報 |
| コントロール | 取引先マスタを閉じるボタン |
| イベント | クリック時 |
| 呼び出し元 | M05取引先 > サブマクロ:取引先全て閉じる |
取引先マスタの新規登録フォームの設計と実装を解説します。取引先コードの空き番号選択・住所コピーボタンによる請求先・配送先への転記・未入力チェックから2つの追加クエリによるテーブル登録までの一連のマクロをまとめています。 新[…]
まとめ
取引先詳細フォームは基本情報・経理情報・配送先・リスト表示の4タブで全情報を参照できる設計です。非連結フォームにDLookUpで値を表示することで誤操作によるデータ書き換えを防いでいます。図番マスタ一覧・受注履歴一覧を同一画面に設置したことで、取引先を選んだ瞬間に関連データを横断して確認できます。編集が必要な場合はフォームフッターの編集ボタンから専用の編集フォームに遷移します。
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。