Accessマクロで作る 受注管理「複数登録」(一括登録)フォームの作り方|

複数登録は、1枚の注文書に同一図番で納期や数量が異なる注文が複数含まれる場合に、最大10件を1つのフォームでまとめて登録できる機能です。取引先・図番・単価などの共通項目は1回だけ入力し、行ごとに手配番号・納期・数量・メモだけを個別入力する構成になっています。

このページでは以下のことを解説しています。

  • 同一図番・複数納期の注文を最大10件、1つのフォームでまとめて登録(取引先・図番・単価などの共通項目は1回入力するだけ)
  • 「マスタあり」受注のみに対象を限定する自動チェック(材料受注・シート受注では複製フォームが開かない誤操作防止)
  • 前の行から自分の行へ1クリックでコピーする複製ボタン(①→②→③と順番に埋めていく設計)
  • 行ごとの自動採番ボタン(押した瞬間に登録するため、連続して押しても番号が重複しない)
  • 一括登録前に全行の手配番号重複を自動チェック
  • 入力済みの件数(1〜10件)を自動判定し、必要な分だけ登録処理を実行

受注管理複数登録フォームの画面構成

①行にはF20受注新規で入力済みのデータがあらかじめ転記された状態で表示されます。②〜⑩行はコピー・手入力で埋めていきます。

新規受注複製登録 フォームビュー(データ入力中)

画面の概要

取引先・図番・単価・課フラグ・フォーキャストは全行共通の値として上部に1回だけ表示され、行ごとに手配番号(採番ボタン付き)・納期・数量・金額・メモを入力します。発注者は下部で1回だけ選択します。


デザインビューで見る複数登録フォームの仕組み

①行の各コントロールが非連結で並び、②〜⑩行にはそれぞれ専用の連番付きコントロール(手配番号1〜9など)が用意されています。右側には受注区分・納期設定の非連結コントロールが隠れて配置されています。

新規受注複製登録フォーム デザインビュー

デザインビューの概要

受注区分・納期設定は、複数登録できる条件(マスタあり受注のみ対応)をチェックするための引き継ぎ用コントロールです。行ごとのコントロールは全て独立しており、共通処理のようにループする仕組みはなく、1行ずつ専用のコントロール名とサブマクロが割り当てられています。


複数登録フォームの呼び出しの仕組み

F20受注新規で①行分のデータ(備考まで)を入力した状態で複数登録ボタンを押すと、条件チェックを経てF20受注登録複製が開き、入力済みのデータが転記されます。

親になるデータを入力してから複数登録ボタンを押す(この状態)

複数登録ボタンのマクロ

入力が必要な項目をチェックをしてから複数登録ポップアップフォームが開く流れです。

サブマクロ:登録区分

サブマクロのテキスト表示
サブマクロ:登録区分

If DCount("[手配番号]","T20受注M","[手配番号] = Forms![F20受注新規]![手配番号] ")<>0 And DCount("[手配番号]","T20受注M","[手配番号] = Forms![F20受注新規]![手配番号] ") Is Not Null Then
    メッセージボックス(登録しようとしたデータの手配番号は既に登録されています。手配番号を取り直してください。, はい, 警告, 重複)
    コントロールの移動(手配番号)
    マクロの中止
If 文の最後

If [受注区分]<>1 Then
    メッセージボックス(複製機能は マスタあり のみで対応可能です。, はい, 警告, 対応不可)
Else
    If IsNull([Forms]![F20受注新規]![取引先コード]) Then
        メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。取引先を入力してください。, はい, 警告, エラー)
        コントロールの移動(取引先コード)
        マクロの中止
    If 文の最後

    If IsNull([図番]) Then
        メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。図番を入力してください。, はい, 警告, エラー)
        コントロールの移動(図番)
        マクロの中止
    If 文の最後

    マクロの実行(M20受注複製.複製, , )
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 手配番号の重複チェック T20受注M内で既に登録済みの手配番号でないか確認
2 If:受注区分≠1 「複製機能はマスタありのみで対応可能」で終了(複数登録不可)
3 Else:取引先コードの必須チェック Nullなら「取引先を入力してください」で中断
4 図番の必須チェック Nullなら「図番を入力してください」で中断
5 マクロの実行 サブマクロ「複製」を呼び出す

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 複数登録ボタン
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:登録区分

複製(転記処理)

新規登録フォームの親データを複数登録ポップアップフォームに転記するサブマクロになります。

サブマクロ:複製

サブマクロのテキスト表示
サブマクロ:複製

If IsNull([受注日]) Then
    メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。受注日を入力してください。, はい, 警告, エラー)
    コントロールの移動(受注日)
    マクロの中止
If 文の最後

If IsNull([手配番号]) Then
    メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。手配番号を入力してください。, はい, 警告, エラー)
    コントロールの移動(手配番号)
    マクロの中止
If 文の最後

If IsNull([納期]) Then
    メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。納期を入力してください。, はい, 警告, エラー)
    コントロールの移動(納期)
    マクロの中止
If 文の最後

If IsNull([数量]) Then
    メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。数量を入力してください。, はい, 警告, エラー)
    コントロールの移動(数量)
    マクロの中止
If 文の最後

If IsNull([単価]) Then
    メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。単価を入力してください。, はい, 警告, エラー)
    コントロールの移動(単価)
    マクロの中止
If 文の最後

If IsNull([発注者コード]) Then
    メッセージボックス(元になる新規受注データをこのフォームに入力してから複数登録が可能になります。発注者を入力してください。, はい, 警告, エラー)
    コントロールの移動(発注者コード)
    マクロの中止
If 文の最後

フォームを開く(F20受注登録複製, フォーム ビュー, , , , 標準)
メッセージの設定(いいえ)
クエリを開く(Q20受注新規自動手番追加, データシート, 編集)
値の代入([Forms]![F20受注登録複製]![受注区分], [Forms]![F20受注新規]![受注区分])
値の代入([Forms]![F20受注登録複製]![手配番号], [Forms]![F20受注新規]![手配番号])
値の代入([Forms]![F20受注登録複製]![取引先コード], DLookUp("取引先コード","T05取引先M","[取引先コード]=[Forms]![F20受注新規]![取引先コード]"))
値の代入([Forms]![F20受注登録複製]![図番], [Forms]![F20受注新規]![図番])
値の代入([Forms]![F20受注登録複製]![図番ID], [Forms]![F20受注新規]![図番ID])
値の代入([Forms]![F20受注登録複製]![単価], [Forms]![F20受注新規]![単価])
値の代入([Forms]![F20受注登録複製]![受注日], [Forms]![F20受注新規]![受注日])
値の代入([Forms]![F20受注登録複製]![成形課], [Forms]![F20受注新規]![成形課])
値の代入([Forms]![F20受注登録複製]![印刷課], [Forms]![F20受注新規]![印刷課])
値の代入([Forms]![F20受注登録複製]![加工課], [Forms]![F20受注新規]![加工課])
値の代入([Forms]![F20受注登録複製]![現品票区分], [Forms]![F20受注新規]![現品票区分])
値の代入([Forms]![F20受注登録複製]![成形フォーキャスト], [Forms]![F20受注新規]![成形フォーキャスト])
値の代入([Forms]![F20受注登録複製]![加工フォーキャスト], [Forms]![F20受注新規]![加工フォーキャスト])
値の代入([Forms]![F20受注登録複製]![納期], [Forms]![F20受注新規]![納期])
値の代入([Forms]![F20受注登録複製]![数量], [Forms]![F20受注新規]![数量])
値の代入([Forms]![F20受注登録複製]![備考], [Forms]![F20受注新規]![備考])
値の代入([Forms]![F20受注登録複製]![発注者コード], DLookUp("従業員コード","T01従業員M","[従業員コード]=[Forms]![F20受注新規]![発注者コード]"))
値の代入([Forms]![F20受注登録複製]![連番], =DCount("*","T20受注自動手番")+1)
値の代入([Forms]![F20受注登録複製]![納期設定], [Forms]![F20受注新規]![納期設定])
コントロールの移動(手配番号1)
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1〜6 必須項目チェック 受注日・手配番号・納期・数量・単価・発注者コードのNullチェック
7 フォームを開く F20受注登録複製をフォームビューで開く
8 クエリを開く Q20受注新規自動手番追加を実行(①行分の自動手番を先行登録)
9〜25 値の代入(複数) 受注区分・手配番号・取引先コード・図番・単価・課フラグ・フォーキャストなどをF20受注新規から一括転記
26 コントロールの移動 手配番号1(②行目)へフォーカス移動

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 複数登録ボタン(登録区分から呼び出し)
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:複製

Q20受注登録複製自動手番追加クエリ デザインビュー

T20受注自動手番テーブルに追加されるクエリ

Q20受注登録複製自動手番追加 フィールド構成

フィールド 内容
自動手配番号 [Forms]![F20受注登録複製]![手配番号]
登録日 Date()
複数登録は「マスタあり」受注のみという制約があるため、ボタンを押した瞬間(登録区分)でまず対象外の受注区分を弾き、その後(複製)で改めて必須項目をチェックする二段構えになっています。誤って材料受注やシート受注のデータで複製フォームを開いてしまう事故を、入口の時点で防いでいます。

複製ボタン・クリアボタンの処理

②〜⑩の各行には複製ボタンクリアボタンが1行ずつ用意されています。ボタン名は「②コピー」のように行番号が付いていますが、実際の動作は「1つ前の行から自分の行へコピーする」チェーン方式です。

ボタン コピー元 コピー先
②コピー ①行 ②行
③コピー ②行 ③行
④コピー ③行 ④行
⑤〜⑩コピー 以下同様に1つ前の行 該当行

上段(コピー元)が空欄の状態でコピーボタンを押すと、「コピーするデータがありません」というエラーで中断されるため、①→②→③…と順番に埋めていく運用が前提の設計です。

サブマクロ:複製3(例:③コピーボタン)

サブマクロのテキスト表示
サブマクロ:複製3

If [Forms]![F20受注登録複製]![手配番号2] Is Null Then
    メッセージボックス(コピーするデータがありません, はい, 警告, エラー)
    コントロールの移動(手配番号3)
    マクロの中止
Else
    値の代入([手配番号3], [手配番号2])
    値の代入([納期3], [納期2])
    値の代入([数量3], [数量2])
    値の代入([備考3], [備考2])
    コントロールの移動(手配番号3)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 If:1つ前の行の手配番号がNull 「コピーするデータがありません」で中断
2 Else:値の代入(4項目) 1つ前の行の手配番号・納期・数量・備考を自分の行へコピー
3 コントロールの移動 自分の行の手配番号へフォーカス移動

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール ③コピーボタン(②〜⑩まで同様のペアが9組)
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:複製1〜9

サブマクロ:クリア1(例:②クリアボタン)

サブマクロのテキスト表示
サブマクロ:クリア1

値の代入([手配番号1], Null)
値の代入([納期1], Null)
値の代入([数量1], Null)
値の代入([備考1], Null)
コントロールの移動(手配番号1)
マクロの中止
サブマクロの最後

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール ②クリアボタン(②〜⑩まで同様が9個)
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:クリア1〜9

②~⑩のコピーボタンとクリアボタンに各々マクロを作成

前セクションの例題で上げた作り方で全てのボタンにマクロを作成します

作成したクエリオブジェクト一覧

複製・クリアの9ペア(複製1〜9、クリア1〜9)は、内容がほぼ同じサブマクロを行番号分だけ複製したものです。VBAであればMe.Controls("手配番号" & i)のようにコントロール名を動的に組み立て、For文で1〜9をループさせるだけで同じ処理を数十行に収められます。マクロのみで組んでいるため、同じロジックを行の数だけ愚直に書き並べる形になっており、保守性よりも「非エンジニアでも中身を1つずつ追える」ことを優先したトレードオフになっています。

採番ボタンの処理

②〜⑩の各行にも、通常の受注新規登録と同じ「連番+日付」形式の自動採番ボタンが用意されています。ボタンを押すとその場でT20受注自動手番へ登録され、次の行の採番時にはすでに使用済みとして扱われる仕組みです。採番が不要な場合は任意の手配番号を手入力することになります。

サブマクロ:採番2(②行目の例)

サブマクロのテキスト表示
サブマクロ:採番2

値の代入
    アイテム = [Forms]![F20受注登録複製]![手配番号1]
    式 = [Forms]![F20受注登録複製]![採番]

メッセージの設定(いいえ)
クエリを開く(Q20受注複製採番2追加, データシート, 編集)
値の代入
    アイテム = [Forms]![F20受注登録複製]![連番]
    式 = DCount("*","T20受注自動手番")+1

コントロールの移動(納期1)
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 値の代入 採番コントロールの値(YYMMDD-連番形式)を②行目の手配番号欄へ転記
2 クエリを開く Q20受注複製採番2追加を実行し、T20受注自動手番へその場で登録
3 値の代入 連番コントロールをDCountで再計算し、次の採番に備えて更新
4 コントロールの移動 納期1(②行目の納期欄)へフォーカス移動

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール ②行目の採番ボタン
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:採番2

サブマクロ:採番3(③行目の例)

サブマクロのテキスト表示
サブマクロ:採番3

値の代入([Forms]![F20受注登録複製]![手配番号2], [Forms]![F20受注登録複製]![採番])
メッセージの設定(いいえ)
クエリを開く(Q20受注複製採番3追加, データシート, 編集)
値の代入([Forms]![F20受注登録複製]![連番], DCount("*","T20受注自動手番")+1)
コントロールの移動(納期2)
マクロの中止
サブマクロの最後

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール ③行目の採番ボタン
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:採番3〜10(④〜⑩行目まで同様の構成が続く)

Q20受注複製採番2追加クエリ デザインビュー

Q20受注複製採番2追加 フィールド構成

フィールド 内容
自動手配番号 [Forms]![F20受注登録複製]![手配番号1]
登録日 Date()

Q20受注複製採番3〜10追加も同じ構成で、参照先のコントロールが手配番号2〜9(③〜⑩行目)に置き換わるだけです。

もし採番ボタンを押しただけで実際の登録(T20受注自動手番への追加)を一括登録まで遅らせていたら、②〜⑩の複数行で採番ボタンを続けて押した際に同じ連番が重複してしまいます。この仕組みでは採番ボタンを押した瞬間にその場でT20受注自動手番へ登録してしまうため、次の行のDCountが正しく1つ増えた状態で計算され、何行連続で採番しても番号が重複しません。

一括登録ボタンの処理

一括登録ボタンを押すと、まず10行同士の手配番号重複チェックが走り、次に入力済みの行数を判定して、該当する件数分のクエリだけを実行します。

サブマクロ:登録

サブマクロのテキスト表示
サブマクロ:登録

If [手配番号1]=[手配番号] Then
If 文の最後
If [手配番号2]=[手配番号] Then
If 文の最後
If [手配番号2]=[手配番号1] Then
If 文の最後
If [手配番号3]=[手配番号] Then
If 文の最後
If [手配番号3]=[手配番号1] Then
If 文の最後
If [手配番号3]=[手配番号2] Then
If 文の最後
(以下、手配番号4〜9についても同様に、自分より前の行すべてとの組み合わせをIf文でチェック)
If [手配番号9]=[手配番号8] Then
If 文の最後

If [Forms]![F20受注登録複製]![手配番号] Is Null Then
If 文の最後
If [Forms]![F20受注登録複製]![手配番号1] Is Null Then
If 文の最後
(以下、手配番号2〜10についても同様にNull判定)
If [Forms]![F20受注登録複製]![手配番号10] Is Null Then
If 文の最後
サブマクロの最後

マクロの概要

区分 処理 内容
前半 手配番号同士の全組み合わせチェック ①〜⑩(実質①と1〜9)の間で、自分より前の行すべてと一致していないか確認。一致すれば「複製中のデータに同じ手配番号のデータがあります」で中断
後半 各行のNull判定 ①〜⑩の手配番号が入力されているかを1行ずつ判定し、入力済みの件数を確定させる

前半IF文の手配番号の重複チェック(一部例題)

If [手配番号9]=[手配番号] Then

サブマクロ:登録(前半部分の手配番号重複判定)

サブマクロのテキスト表示
If [手配番号9]=[手配番号] Then
    メッセージボックス(複製中のデータに同じ手配番号のデータがあります。確認してください。, はい, 警告, 重複あり)
    コントロールの移動
        コントロール名 手配番号9
    マクロの中止
If 文の最後

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール 一括登録ボタン
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:登録

登録マクロ後半の件数に応じたクエリ実行(1件の場合と10件の場合)

②~⑩行の手配番号Null判定の結果に応じて、実際に入力されている件数分だけQ20受注登録複製追加系のクエリを実行します。

後半IF文のNull判定と追加クエリ(1件の場合)

マクロアクション:If [Forms]![F20受注登録複製]![手配番号1] Is Null Then IF文の展開

サブマクロ:登録(1件のみ入力されている場合)

サブマクロのテキスト表示
If [Forms]![F20受注登録複製]![手配番号1] Is Null Then
    警告音
    If MsgBox("1件のデータを新規登録します。よろしいですか?",4+32,"確認")=6 Then
        メッセージの設定(いいえ)
        クエリを開く(Q20受注登録複製追加, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加, データシート, 編集)
        メッセージボックス(1件のデータを追加しました。, いいえ, なし, 新規データ追加完了)
        値の代入([閉じる判定], 1)
        マクロの実行(M20受注複製.クリア, , )
        コントロールの移動(手配番号1)
        マクロの中止
    Else
        メッセージボックス(登録を中止しました, はい, なし, 中止)
        マクロの中止
    If 文の最後
If 文の最後

後半IF文のNull判定と追加クエリ(10件の場合)

マクロアクション:If [Forms]![F20受注登録複製]![手配番号10] Is Null Then IF文の展開

サブマクロ:登録(10件全て入力されている場合)

サブマクロのテキスト表示
If [Forms]![F20受注登録複製]![手配番号10] Is Null Then
    警告音
    If MsgBox("10件のデータを新規登録します。よろしいですか?",4+32,"確認")=6 Then
        メッセージの設定(いいえ)
        クエリを開く(Q20受注登録複製追加, データシート, 編集)
        クエリを開く(Q20受注登録複製追加1, データシート, 編集)
        クエリを開く(Q20受注登録複製追加2, データシート, 編集)
        クエリを開く(Q20受注登録複製追加3, データシート, 編集)
        クエリを開く(Q20受注登録複製追加4, データシート, 編集)
        クエリを開く(Q20受注登録複製追加5, データシート, 編集)
        クエリを開く(Q20受注登録複製追加6, データシート, 編集)
        クエリを開く(Q20受注登録複製追加7, データシート, 編集)
        クエリを開く(Q20受注登録複製追加8, データシート, 編集)
        クエリを開く(Q20受注登録複製追加9, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加1, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加2, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加3, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加4, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加5, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加6, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加7, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加8, データシート, 編集)
        クエリを開く(Q20受注登録複製自動手番追加9, データシート, 編集)
        メッセージボックス(10件のデータを追加しました。, いいえ, なし, 新規データ追加完了)
        値の代入([閉じる判定], 1)
        マクロの実行(M20受注複製.クリア, , )
        マクロの実行(M20受注複製.クリア1, , )
        マクロの実行(M20受注複製.クリア2, , )
        マクロの実行(M20受注複製.クリア3, , )
        マクロの実行(M20受注複製.クリア4, , )
        マクロの実行(M20受注複製.クリア5, , )
        マクロの実行(M20受注複製.クリア6, , )
        マクロの実行(M20受注複製.クリア7, , )
        マクロの実行(M20受注複製.クリア8, , )
        マクロの実行(M20受注複製.クリア9, , )
        コントロールの移動(手配番号1)
        マクロの中止
    Else
        メッセージボックス(登録を中止しました, はい, なし, 中止)
        マクロの中止
    If 文の最後
If 文の最後
サブマクロの最後

マクロの概要

入力件数 実行される確認メッセージ 実行クエリ 登録後のクリア
1件(①行のみ) 「1件のデータを新規登録します」 Q20受注登録複製追加+自動手番追加のみ クリア(①行のみ)
2件〜9件 「N件のデータを新規登録します」(件数に応じて動的に変化) 入力済み行数分の追加系+自動手番追加系クエリ 入力済み行数分のクリアN
10件(全行) 「10件のデータを新規登録します」 追加系10本+自動手番追加系10本 クリア〜クリア9まで全て

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール 一括登録ボタン
イベント クリック時
呼び出し元 M20受注複製 > サブマクロ:登録
1件〜10件のどのパターンでも対応できるようにするため、Null判定の結果に応じたIf分岐を1〜10件それぞれに用意する必要があり、サブマクロ「登録」は非常に長大になっています。VBAであれば「Nullでない行数をカウントし、その数だけループでクエリ相当の処理を実行する」という数行のロジックで済むところを、マクロでは件数ごとに専用の分岐とクエリ名を用意せざるを得ません。結果として、45通りの重複チェックと合わせ、このページで最もボリュームのあるマクロになっています。

クエリの構成

①行用のQ20受注登録複製追加と、②〜⑩行用のQ20受注登録複製追加1〜9は、参照するコントロール名(手配番号・手配番号1〜9など)が違うだけで、フィールド構成は同一です。

Q20受注登録複製追加クエリ デザインビュー(一部)

Q20受注登録複製追加クエリ フィールド構成

フィールド 内容
取引先コード・図番・図番ID・単価・受注日・成形課・加工課・印刷課・成形フォーキャスト・加工フォーキャスト・現品票区分 F20受注登録複製の共通項目からそのまま追加
手配番号・納期 ①行のコントロールから追加
数量・備考 ①行のコントロールから追加
分納残数 数量と同値で初期化
従業員コード 発注者コード
受注区分・納期設定 転記された値をそのまま追加

Q20受注登録複製自動手番追加クエリ デザインビュー

Q20受注登録複製自動手番追加クエリ フィールド構成

フィールド 内容
自動手配番号 [Forms]![F20受注登録複製]![手配番号]
登録日 Date()

Q20受注登録複製追加1〜9・Q20受注登録複製自動手番追加1〜9も同じ構成で、参照先のコントロールが手配番号1〜9(②〜⑩行)に置き換わるだけです。


閉じるボタン

フォームを閉じる標準的な処理で、他マスタの閉じるボタンと共通のマクロを流用しています。

M99共通 閉じるマクロ 流用

関連記事

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

マクロの設置場所

項目 内容
フォーム F20受注登録複製
コントロール 閉じるボタン
イベント クリック時
呼び出し元 M99共通 > サブマクロ:閉じる

まとめ

複数登録は、1枚の注文書に含まれる複数の納品パターンを1つのフォームでまとめて処理するための機能です。①行から順にチェーン方式でコピーしていく複製ボタン、45通りの組み合わせで重複を防ぐ登録前チェック、そして入力件数に応じて実行するクエリを切り替える一括登録処理まで、マクロだけでVBAのループ処理に近いことを実現しようとした結果、ボリュームの大きなマクロ構成になっています。手間はかかっていますが、その分「同じ図番の分納注文を1件ずつ手打ちしなくていい」という現場の負担軽減につながっている機能です。

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

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