LWP | VBAのボタンを作る前に―共通入力と再実行の境界を考える
VBAのボタンを作る前に―共通入力と再実行の境界を考える
StageとWorkflowを分け、待ち時間と途中失敗を扱う
ストーリー
コイ丸先輩が用意した二つの帳票ボタン。どちらも分かりやすいのに、両方押すと入力取得まで二度走っていた。アユさんとデータの関係を描き直し、「一つのボタンは何を実行するのか」を考える。
共通入力を再利用できる業務を想定した設計例です。入力30分、帳票1が2分、帳票2が10分という時間は仮定。直列実行で、保存・読込の追加時間を省いた計算です。72分と42分を実機の性能測定や一般的な高速化率として扱いません。
1 欲しい帳票と共通入力

図1|成果物を作る前に、共通入力との関係を描く。
2 同じ30分を二度待つのか

図2|入力再利用が可能な条件で、重複取得の待ち時間を比べる。
3 Stageは意味のある一区間

図3|再利用・分岐・停止・再実行から基本区間を決める。
4 所有と共通部品の呼出し

図4|業務処理の責務と汎用関数の再利用を分ける。
5 一括ボタンはStageを組み合わせる

図5|基本区間と便利な一括操作を両立する。
6 昨日の入力で今日の帳票?

図6|後続区間は、入力の鮮度と開始条件を確認する。
7 失敗した途中結果を渡さない

図7|完成状態の確定と後続停止を、分割設計と一緒に考える。
まとめ
ボタンの数や名前を決める前に、入力・出力と依存関係を描きます。再利用できる完成データ、分岐、意味のある停止位置、再実行の目的から基本の実行区間を決め、便利な一括操作は既存区間の組み合わせとして追加します。
今回の仕掛け
Stageは今回の記事で呼ぶ基本実行区間です。トップレベルの業務処理の責務を一つの区間へ置くことと、汎用関数を複数の区間から呼ぶことを区別します。似た呼出しツリーがあるだけでは設計不良とは判断しません。
Workflowは複数のStageを順に呼ぶ実行の段取りです。入力更新だけ、帳票1だけ、最新化して帳票1、一括実行など、利用者の目的・権限・頻度に合わせて入口を選べます。ノードの数だけボタンを増やす必要はありません。
入力を再利用するなら、対象期間・最終成功日時・入力件数・取得元を保ち、後続の開始条件を確認します。毎回最新の入力が必要な業務では、再利用の可否を先に判断します。
Subの分割だけでは原子的な更新やロールバックは保証されません。一時領域で取得・整形し、成功時だけ共通入力を置換するのは設計案です。途中失敗では後続を止め、再実行時の重複出力を防ぐ仕組みも実装します。
今回のソースコードのサンプル
サンプルコード 既存Stageを朝のWorkflowから順に呼ぶ
01 |
|
|---|---|
02 |
|
03 |
|
04 |
|
05 |
|
06 |
|
07 |
|
08 |
|
09 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
関数の説明
Subは処理をまとめた手続きです。Workflow_MorningからStage_InputとStage_Report1を順に呼びます。Debug.Printはイミディエイトウィンドウへ文字を出します。[Callと手続き呼出し](https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/call-statement)
コードの説明
Workflow_Morningは呼出し順だけを持ちます。二つのStageの内部処理をWorkflowへ再実装せず、既存の入口を利用します。このサンプルには未定義のStageを残さず、表示だけの本体を用意しています。
入力・概要
Excel VBAの標準モジュールへ全体を貼り付ける説明用サンプルです。TakiLibは不要です。帳票生成・実データ更新・鮮度検査・失敗時の状態管理は実装していません。実ブックの実行・性能測定は未実施です。
結果
Workflow_Morningを実行すると、イミディエイトウィンドウへ「入力Stage(説明用)」「帳票1Stage(説明用)」の順で表示する構成です。
読むポイント
実務の本体をStageに置き、Workflowには段取りを置く関係を見てください。単独ボタンから同じStageを呼ぶ構成も作れます。
出典メモ
元ネタ:[採用原稿 260913_VBA_ボタン設計_データフロー.md](<C:/LWP/記事制作/01_記事ネタ/archive/260913_VBA_ボタン設計_データフロー.md>)。2026年10月4日に原稿全文と追補を確認し、中心主題を選んで再構成しました。会社・人物・業務データは創作・説明用です。
技術の仕様は原資料と一次資料に照合しました。サンプルと図の結果はソース・仕様・計算に基づく予測で、Excel実機の動作確認済みとはしていません。
Copyright © 2026 LWP 山中 一弘
本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。
