配合表マスタ「編集」

配合表マスタの詳細・編集フォームです。登録済みの配合表を表示するだけでなく、現場での実使用量を入力すると配合剤ごとの使用重量を自動計算し、配合表・使用重量表として印刷できます。また、その配合番号を使用している製品の図番も同一画面から確認できます。


配合表編集画面の構成

配合表リストの詳細ボタンから起動します。基本情報・配合剤一覧・使用量計算・使用図番・訂正履歴を1画面に集約しています。

フォームビュー

左側に登録日・登録者・配合番号・原材料名・想定硬度・色調・基本配合量・備考・確認者・承認者、中央に配合剤1〜10と配合量、その右に使用量計算欄と使用量ベースの配合量、さらに右に使用図番の一覧、下部に訂正履歴(改定1〜3)を配置しています。

F65配合表編集 フォームビュー

画面の概要

画面上のコントロールと役割をまとめています。

画面の概要

項目 内容
登録日/登録者 表示のみ(DLookupによる非連結表示)
配合番号 表示のみ(変更不可の社内ルール)。使用可能TRUE・編集ロックTRUEのため文字自体はコピー可能
原材料名/想定硬度/色調/基本配合量/備考 編集可能な入力欄
配合剤1〜10/配合量1〜10 編集可能な入力欄。右に使用量ベースの配合量(g)を自動表示
使用量計算(kg) 現場での実使用量を入力する非連結欄
合計配合重量 配合量1〜10の合計を表示(表示のみ)
使用図番(サブフォーム) この配合番号を使用している製品の図番一覧。マスタボタンで該当製品マスタを開く
改定1〜3 訂正日・訂正内容・訂正者・承認者を3件まで登録できる履歴欄
確認者/承認者 コンボボックスで従業員コードを選択。右側にDLookup相当の表示で氏名を確認
編集更新ボタン 入力内容をT65配合表Mへ反映
配合表印刷ボタン 配合表帳票をプレビュー後に印刷
使用量印刷ボタン 使用重量表をプレビュー後に印刷
閉じるボタン フォームを閉じる
配合番号は登録後の変更が社内ルールで禁止されているため、フォーム上は編集不可の見た目にしています。ただし使用可能TRUE・編集ロックTRUEという設定にすることで、文字自体は選択してコピーできる状態を保っています。他のページへ配合番号を貼り付けたい場面のための、地味だが実務的な配慮です。

デザインビューで見る仕組み

フォームのセクション構成とコントロール配置を確認します。

デザインビュー

配合剤一覧の右側に使用量ベースの配合量(g)欄が並び、それぞれIIf(IsNull…)による計算式コントロールになっています。訂正履歴(改定1〜3)はコンボボックスの列参照で改訂者・承認者の氏名を表示しています。

F65配合表編集 デザインビュー

デザインビューの概要

詳細セクションの構成をまとめています。

デザインビューの概要

セクション 内容
基本情報エリア 登録日・登録者・配合番号・原材料名・想定硬度・色調・基本配合量・備考・確認者・承認者を配置
配合剤一覧エリア 配合剤1〜10・配合量1〜10・合計配合重量を配置
使用量計算エリア 使用量計算(kg)入力欄と、配合量1〜10それぞれに対応する使用量ベースの配合量(g)表示欄を配置
使用図番エリア 使用図番サブフォームを配置
訂正履歴エリア 改定1〜3(訂正日・訂正内容・訂正者・承認者)を配置
フォームフッター 編集更新・配合表印刷・使用量印刷・閉じるの4ボタンを配置

使用量計算ボックスの仕組み

使用量計算(kg)に現場での実使用量を入力すると、基本配合量(レシピ全体の基準重量)に対する比率で配合剤ごとの使用重量を自動計算します。新規登録ページの合計配合重量が配合量1〜10の単純な足し算だったのに対し、編集ページの使用量計算は基本配合量を基準とした比例配分の計算になっている点が異なります。

使用量計算の概要

項目 内容
配合量N(使用量ベース)のコントロールソース =IIf(IsNull([配合剤N]),””,[配合量N]/[基本配合量]*[使用量])
合計重量(使用量ベース)のコントロールソース =IIf(IsNull([合計配合量]),””,[合計配合量]/[基本配合量]*[使用量])
計算の考え方 配合量N(またはレシピ全体の合計配合量)÷基本配合量=配合比率。これに使用量(実際に使う量)を掛けることで、その使用量に必要な各配合剤の重量を算出
未入力時の挙動 対応する配合剤が未登録、または使用量が未入力の場合は空欄表示

クエリ:Q65配合表編集更新の構成

編集更新ボタンから呼び出される更新クエリです。編集画面のIDで対象レコードを特定し、各項目をフォームの入力値で上書きします。

クエリデザインビュー

抽出条件は[Forms]![F65配合表編集]![ID]の一致のみで、レコードの更新にはフォーム上の各コントロールの値をそのまま割り当てています。

Q65配合表編集更新クエリ デザインビュー

Q65配合表編集更新 フィールド構成

更新対象フィールドと更新元をまとめています。

Q65配合表編集更新 フィールド構成

フィールド 更新元
配合番号 [Forms]![F65配合表編集]![配合番号]
登録日 [Forms]![F65配合表編集]![登録日]
原材料名 [Forms]![F65配合表編集]![原材料名]
硬度 [Forms]![F65配合表編集]![想定硬度]
色調 [Forms]![F65配合表編集]![色調]
配合剤1〜10 [Forms]![F65配合表編集]![配合剤1]〜[配合剤10]
配合量1〜10 [Forms]![F65配合表編集]![配合量1]〜[配合量10]
基本配合量 [Forms]![F65配合表編集]![基本配合量]
備考 [Forms]![F65配合表編集]![備考]
訂正日1〜3/訂正内容1〜3/訂正者1〜3 [Forms]![F65配合表編集]![改定に対応する各コントロール]
確認者コード/承認者コード/訂正承認者コード1〜3 [Forms]![F65配合表編集]![対応するコントロール]
抽出条件(ID) [Forms]![F65配合表編集]![ID]

使用図番サブフォームの仕組み

この配合表を使用している製品の図番を、製品マスタ側から逆引きして一覧表示するサブフォームです。

クエリデザインビュー

T11製品成形とT10製品Mを結合し、T10製品Mの配合番号1〜4を連結した文字列に対して、編集中の配合番号をLikeで部分一致させることで、配合番号1〜4のどこに登録されていても漏れなく抽出できる仕組みです。

Q65配合表編集使用図番サブ クエリデザインビュー

クエリの概要

結合・抽出条件をまとめています。

クエリの概要

項目 内容
結合テーブル T11製品成形・T10製品M
抽出用の式 [配合番号1] & [配合番号2] & [配合番号3] & [配合番号4]
抽出条件 Like “” & [Forms]![F65配合表リスト]![F65配合表リストサブ]![配合番号] & “
参照元 F65配合表リスト画面のカレント選択行(配合表リストは編集画面を開いている間も裏で開いたまま)
表示フィールド 図番・ID

製品側の配合番号1〜4は、1〜4が製品製造に直結する配合番号、5〜8が予備の配合番号という運用ルールです(製品マスタのページで解説済み)。


各コントロールの設定

編集フォーム上の各コントロールの動作を1つずつ解説します。

詳細ボタン(F65配合表リストフォームから起動)

配合表リストの詳細ボタンから、選択行のIDをF65配合表編集に渡してフォームビューで開き、続けてM65配合表.編集表示マクロを呼び出して全項目を転写するマクロです。

サブマクロ:編集開く

サブマクロのテキスト表示
サブマクロ:編集開く
 フォームを開く(F65配合表編集, フォーム ビュー, , , , 標準)
 値の代入
  アイテム = [Forms]![F65配合表編集]![ID]
  式 = [Forms]![F65配合表リスト]![F65配合表リストサブ]![ID]
 マクロの実行
  マクロ名 = M65配合表.編集表示
  実行回数 =
  繰り返し条件式 =
 再クエリ
  コントロール名 =
 マクロの中止
サブマクロの最後

マクロの概要

項目 内容
処理内容 F65配合表編集を開き、選択行のIDを渡してから編集表示マクロを実行
呼び出しマクロ M65配合表.編集表示

マクロの設置場所

設置場所 イベント
F65配合表リスト:詳細ボタン クリック時

編集表示マクロ

渡されたIDを条件に、DLookupで登録日・登録者・配合番号・原材料名・硬度・色調・配合剤1〜10・配合量1〜10・基本配合量・備考・訂正日1〜3・訂正内容1〜3・訂正者1〜3・確認者コード・承認者コード・訂正承認者コード1〜3のすべてを転写するマクロです。他ページから編集フォームを開く際に流用できるよう、開くマクロと表示マクロをあえて分離しています。

サブマクロ:編集表示

サブマクロのテキスト表示
サブマクロ:編集表示
 値の代入 [Forms]![F65配合表編集]![登録日]、DLookUp("登録日","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![従業員コード]、DLookUp("従業員コード","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![配合番号]、DLookUp("配合番号","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![原材料名]、DLookUp("原材料名","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![硬度]、DLookUp("硬度","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![色調]、DLookUp("色調","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![配合剤1]、DLookUp("配合剤1","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![配合量1]、DLookUp("配合量1","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 (配合剤2〜10・配合量2〜10も同様のDLookupパターンで転写)
 値の代入 [Forms]![F65配合表編集]![基本配合量]、DLookUp("基本配合量","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![備考]、DLookUp("備考","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![訂正日1]、DLookUp("訂正日1","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 (訂正日2・訂正日3、訂正内容1〜3、訂正者1〜3も同様のDLookupパターンで転写)
 値の代入 [Forms]![F65配合表編集]![確認者コード]、DLookUp("確認者コード","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![承認者コード]、DLookUp("承認者コード","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 値の代入 [Forms]![F65配合表編集]![訂正承認者コード1]、DLookUp("訂正承認者コード1","T65配合表M","[ID]=[Forms]![F65配合表編集]![ID]")
 (訂正承認者コード2・3も同様のDLookupパターンで転写)
サブマクロの最後

マクロの概要

項目 内容
処理内容 全項目をDLookupでT65配合表Mから転写
抽出条件 共通してID一致

マクロの設置場所

設置場所 イベント
M65配合表(マクロ内サブマクロ) 編集開くマクロから呼び出し
編集フォームを開くマクロと、DLookupで全項目を転写する表示マクロをあえて分離しています。作成当初は他ページからの呼び出しを想定していなくても、今回のように使用図番サブフォームのマスタボタンから製品マスタを開くケースが後から出てきたように、表示マクロだけを独立させておくことで別の呼び出し元からも再利用できる設計になっています。

編集更新ボタン

確認メッセージ後、Q65配合表編集更新を実行してT65配合表Mを更新し、更新完了メッセージ表示後にフォームを閉じて一覧を再クエリするマクロです。

サブマクロ:編集更新

サブマクロのテキスト表示
サブマクロ:編集更新
 警告音
 If MsgBox("編集したデータを更新してもよろしいですか?",4+32,"確認")=6 Then
  メッセージの設定(いいえ)
  クエリを開く(Q65配合表編集更新, データシート, 編集)
  メッセージボックス(更新しました, はい, なし, 更新済)
  ウィンドウを閉じる(フォーム, F65配合表編集, 確認)
  再クエリ ()
  マクロの中止
 Else
  メッセージボックス(処理を中止します, はい, なし, 中止)
  マクロの中止
 If 文の最後
サブマクロの最後

マクロの概要

項目 内容
確認メッセージ 「編集したデータを更新してもよろしいですか?」で更新意思を最終確認
更新処理 Q65配合表編集更新をデータシートビューで開き実行
更新後の処理 更新完了メッセージ表示→フォームを閉じる→一覧を再クエリ

マクロの設置場所

設置場所 イベント
F65配合表編集:編集更新ボタン クリック時

配合表印刷ボタン

R65配合表印刷レポートをプレビューで確認したのち、印刷可否を再確認して印刷するマクロです。配合量そのものを印刷するため、使用量の入力チェックはありません。

サブマクロ:配合表印刷

サブマクロのテキスト表示
サブマクロ:配合表印刷
 警告音
 If MsgBox("配合表をプレビューで確認してから印刷してください。よろしいですか?",4+32)=6 Then
  レポートを開く(R65配合表印刷, 印刷プレビュー, , , 標準)
  If MsgBox("配合表を印刷します。よろしいですか?",4+32)=6 Then
   レポートを開く(R65配合表印刷, 印刷, , , 標準)
   メッセージボックス(配合表の印刷が完了しました。, はい, なし, 印刷完了)
   ウィンドウを閉じる(レポート, R65配合表印刷, 確認)
   マクロの中止
  Else
   メッセージボックス(印刷を中止しました, はい, なし, 中止)
   ウィンドウを閉じる(レポート, R65配合表印刷, 確認)
   マクロの中止
  If 文の最後
 Else
  メッセージボックス(処理を中止しました, はい, なし, 中止)
  マクロの中止
 If 文の最後
サブマクロの最後

マクロの概要

項目 内容
処理の流れ プレビュー確認の意思確認→プレビュー表示→印刷実行の意思確認→印刷実行
対象レポート R65配合表印刷
印刷内容 配合量(基本配合量ベース)をそのまま印刷

マクロの設置場所

設置場所 イベント
F65配合表編集:配合表印刷ボタン クリック時

使用量印刷ボタン

使用量が未入力の場合は印刷できないようチェックしたうえで、R65配合表使用量印刷レポートをプレビュー確認後に印刷するマクロです。

サブマクロ:配合表使用量印刷

サブマクロのテキスト表示
サブマクロ:配合表使用量印刷
 If IsNull([使用量]) Then
  メッセージボックス(使用量が登録されていません, はい, 警告, 未登録)
  コントロールの移動(使用量)
  マクロの中止
 If 文の最後
 警告音
 If MsgBox("使用重量表をプレビューで確認してから印刷してください。よろしいですか?",4+32)=6 Then
  レポートを開く(R65配合表使用量印刷, 印刷プレビュー, , , 標準)
  If MsgBox("使用重量表を印刷します。よろしいですか?",4+32)=6 Then
   レポートを開く(R65配合表使用量印刷, 印刷, , , 標準)
   メッセージボックス(使用重量表の印刷が完了しました。, はい, なし, 印刷完了)
   ウィンドウを閉じる(レポート, R65配合表使用量印刷, 確認)
   マクロの中止
  Else
   メッセージボックス(印刷を中止しました, はい, なし, 中止)
   ウィンドウを閉じる(レポート, R65配合表使用量印刷, 確認)
   マクロの中止
  If 文の最後
 Else
  メッセージボックス(処理を中止しました, はい, なし, 中止)
  マクロの中止
 If 文の最後
サブマクロの最後

マクロの概要

項目 内容
必須チェック 使用量が未入力の場合はエラー表示して中止
処理の流れ プレビュー確認の意思確認→プレビュー表示→印刷実行の意思確認→印刷実行
対象レポート R65配合表使用量印刷
印刷内容 使用量ベースで計算した重量を印刷

マクロの設置場所

設置場所 イベント
F65配合表編集:使用量印刷ボタン クリック時

使用図番サブフォームのマスタボタン

使用図番サブフォームの行にあるマスタボタンから、該当製品の製品マスタを開くマクロです。まず製品マスタリストをフォームビューで開き、M10製品.再検索マクロを実行したのち、図番検索ボックスに図番を転記して再クエリすることで、リストが該当図番だけに絞り込まれた状態になります。そこから詳細ボタンを押すと製品マスタの詳細画面に進めます。

サブマクロ:使用図番

サブマクロのテキスト表示
サブマクロ:使用図番
 フォームを開く(F10製品リスト, フォーム ビュー, , , , 標準)
 マクロの実行
  マクロ名 = M10製品.再検索
  実行回数 =
  繰り返し条件式 =
 値の代入
  アイテム = [Forms]![F10製品リスト]![図番検索]
  式 = [Forms]![F65配合表編集]![F65配合表編集使用図番サブ]![図番]
 再クエリ
  コントロール名 =
 マクロの中止
サブマクロの最後

マクロの概要

項目 内容
処理の流れ 製品マスタリストを開く→再検索マクロで検索条件をリセット→図番検索欄に該当図番をセット→再クエリで絞り込み
結果 製品マスタリストが該当図番1件だけに絞り込まれた状態で表示される
続きの操作 リストの詳細ボタンを押すことで該当製品の詳細ページに進める(ツーアクション)

マクロの設置場所

設置場所 イベント
F65配合表編集使用図番サブ:マスタボタン クリック時

閉じるボタン

フォームを閉じるボタンです。M99共通.閉じるを呼び出す共通処理で統一されています。

閉じるボタンの解説ページ

関連記事

フォームごとに同じ処理のマクロを個別に作ると、マクロの数が際限なく増えて管理が大変になります。M99共通マクロはどのフォームでも使い回せる処理をサブマクロとして一箇所に集約したものです。コントロール名を統一しておくことでフォームを問わず同じ[…]


レポート:配合表・使用重量表

配合表印刷ボタン・使用量印刷ボタンから開く2つの帳票です。レイアウトはほぼ共通で、タイトルと「重量」列の計算元だけが異なります。

配合表レポート

R65配合表印刷 デザインビュー

R65配合表印刷 プレビュー

使用重量表レポート

R65配合表使用量印刷 デザインビュー

R65配合表使用量印刷 プレビュー

帳票の共通仕様

2帳票の共通レイアウトと違いをまとめています。

帳票の共通仕様

項目 内容
タイトル 配合表印刷は「配合表」、使用量印刷は「使用重量表」
承認/確認/作成欄 いずれも承認者コード/確認者コード/従業員コード(登録者)のコンボボックス列参照(.Column(1))で略称を表示
明細部(重量列) 配合表印刷は配合量そのもの、使用量印刷は使用量ベースの計算値を表示
共通項目 配合番号・原材料名・色調・硬度・作成日・登録日・配合剤1〜10・メモ(配合量1〜10)・合計・基本配合量・備考・改訂履歴(訂正日1〜3・訂正内容1〜3・訂正者1〜3・承認者)

まとめ

配合表編集は詳細表示・編集・使用量からの重量計算・印刷・使用図番の逆引きまでを1画面に集約したページです。開くマクロと表示マクロの分離、配合番号の編集ロック+コピー可能設定、基本配合量ベースの比例配分計算など、他マスタの編集ページと共通する設計思想に加え、配合表マスタ特有の使用量計算・使用図番の仕組みが盛り込まれています。

 

本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。

ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。