テンプレートで実際のフォームを作る
このページでは、あらかじめ用意した「テンプレポップアップ」フォームをベースに、従業員マスタの新規登録フォームを実際に作る手順を紹介します。テンプレートを使うことで、書式や基本設定を一から組み立てる手間を省きながら、実用的なフォームを効率よく仕上げることができます。
注意事項
Accessは操作中に強制終了することがあります。手順の節目ごとに Ctrl+S で上書き保存する習慣をつけておくと、作業のやり直しを最小限に抑えられます。
ポップアップフォームの土台。サイズと設定を調整して、中身を入れ替えるだけで完結する。 テンプレート(ポップアップ)の完成形 このテンプレートをコピーして中身を入れ替えるだけで、統一されたフォームが作れます。 テンプレート(ポップア[…]
テンプレートをコピーして土台を作る
テンプレポップアップフォームをコピーし、新しい名前を付けてフォームの土台を作ります。最初にフォームの標題(タイトルバーに表示される名前)も設定しておきます。
手順
- ナビゲーションウィンドウで「テンプレポップアップ」を右クリック→「コピー」
- 同じ場所に「貼り付け」→フォーム名を F01従業員新規(サンプル) とする
- 作成したフォームをデザインビューで開く
- フォームプロパティ →「その他」タブ→ 標題を 従業員新規登録 と入力する
- 上書き保存(Ctrl+S)
レコードソースを一時的につないでフィールドを配置する
フィールドリストを使ってコントロールを配置するために、まずフォームのレコードソースにテーブルを一時的に設定します。
テキストボックスを手動で置いた場合、名前やデータ型を自分で設定する必要があります。レコードソースを先につなぐことで、フィールドリストから配置するだけで名前・データ型が揃ったテキストボックスが自動的にセットされます。ここがこの手順のキモです。
手順
- フォームをデザインビューで開いた状態でフォームプロパティを開く
- 「データ」タブ→ レコードソースに T01従業員M を設定する
フォームプロパティのデータタブでT01従業員Mを設定した状態
- リボン「デザイン」→「既存のフィールドの追加」でフィールドリストを開く
T01従業員Mのフィールドが一覧表示されているフィールドリスト
- 配置するフィールドをフィールドリストから選択し、詳細セクションにドラッグ&ドロップする
- 複数選択は Ctrl+クリック
- まとめて選択してから一度にドロップすると効率的
フィールドリストから配置した直後のデザインビュー
- 上書き保存(Ctrl+S)
補足 この段階では配置の整列や書式はまだ整えません。まず「必要なフィールドを揃える」ことだけに集中するのがポイントです。
コントロールを非連結に戻す
フィールドを配置し終えたら、レコードソースとコントロールソースの接続をすべて切り離します。このシステムでは登録処理をマクロで制御するため、フォーム自体はテーブルと直接つながない「非連結」の状態で運用します。
手順
- フォームプロパティ →「データ」タブ→ レコードソースを 空欄 にする
- すべてのテキストボックスを選択し、プロパティシート →「データ」タブ→ コントロールソースを 空欄 にする
- 全選択は詳細セクションの何もない部分をクリック後、Ctrl+A
- テキストボックスのプロパティシート →「その他」タブ→ ラベル名を 空欄 にする
- ラベルとテキストボックスの連結を解除する(一方を動かしたときにもう一方が追随しなくなる)
コントロールソースが空欄になり「非連結」と表示された状態
- 上書き保存(Ctrl+S)
補足 ラベルとテキストボックスの連結解除は地味に重要な操作です。連結したままだと配置の調整時に両方が動いてしまい、レイアウト作業がやりにくくなります。
書式を統一して配置を整える
コントロールの書式をすべて統一してから、入力順を考慮して詳細セクション内に配置します。全選択で一括変更できるので、コントロールの数が多くても手間はかかりません。
手順
- 詳細セクション内のコントロールをすべて選択する(Ctrl+A)
- プロパティシート →「書式」タブで以下を一括設定する
ラベルとテキストボックス共通
| プロパティ | 設定値 |
|---|---|
| フォントサイズ | 9 |
| 高さ | 0.6cm |
| 上余白 | 0.05cm |
- ラベルのみ選択して以下を設定する
ラベルの書式
| プロパティ | 設定値 |
|---|---|
| 背景色 | アクセント5, 暗め25% |
| 前景色 | 背景1(白) |
| 幅 | 2.5cm |
| 文字配置 | 中央 |
| ログインパスワードのラベルのみ | フォント:半角対応フォント |
ラベルの書式設定が統一された状態
- テキストボックスのみ選択して以下を設定する
テキストボックスの書式
| プロパティ | 設定値 |
|---|---|
| 幅 | 3cm(基本幅・後で個別調整) |
| 条件付き書式 | フォーカスのあるフィールドを薄水色 |
- 上書き保存(Ctrl+S)
- ラベルとテキストボックスを入力順を考慮して詳細セクション内に配置する
- 左側ラベルの左位置:0.5cm 基準
- テキストボックスはラベルから 0.2cm 離す
- ドラッグ&ドロップで移動
コントロールを配置した直後のデザインビュー
- 上書き保存(Ctrl+S)
全選択一括書式変更
コントロールの書式統一は、全選択してからプロパティを変更するだけで一括適用できます。フォントサイズや高さをコントロールごとに個別設定していると、数十個あるフィールドの変更は相当な手間です。全選択(Ctrl+A)後にプロパティシートで値を入力すると、選択中のすべてのコントロールに同時に反映されます。さらに便利なのは、後からフィールドを追加したときも同じ操作で書式を揃えられる点です。追加した分だけ選択して一括変更するだけなので、フォームを育てていく過程でも書式が崩れません。
テキストボックスを追加する
フィールドリストから配置できないコントロール(氏名の姓名分割・フリガナ・年齢・所属略称・分類)は、近くにある既存のラベルとテキストボックスをコピー&ペーストして追加します。コピー元の書式がそのまま引き継がれるので、書式の再設定が不要です。
手順
- 書式が統一済みのラベル+テキストボックスのセットをコピー&ペーストして必要数を増やす
- 追加したテキストボックスのプロパティシート →「その他」タブ→「名前」を正しい名前に変更する
追加するコントロールと名前
| 追加コントロール | テキストボックスの名前 |
|---|---|
| 氏名(名) | 名前 |
| フリガナ(セイ・メイ) | フリガナセイ・フリガナメイ |
| 年齢 | 年齢 |
| 所属略称 | 所属略称 |
| 分類 | 分類 |
追加したテキストボックスに名前を設定した状態
- 上書き保存(Ctrl+S)
コントロールの種類を変更する
テキストボックスをオプショングループやコンボボックスに変更します。右クリック→「コントロールの種類の変更」から切り替えられます。
性別 → オプショングループ
| オプション | 値 |
|---|---|
| 男性 | 1 |
| 女性 | 2 |
雇用区分 → コンボボックス
| プロパティ | 設定値 |
|---|---|
| 値集合タイプ | 値リスト |
| 値集合ソース | 正社員;アルバイト・パート;契約社員;嘱託 |
所属部署 → コンボボックス(クエリビルダー)
所属部署だけはクエリビルダーで集合ソースを設定します。T02従業員所属部署テーブルから所属部署コード・所属部署・所属略称・分類の4フィールドを取得し、所属部署コードで昇順に並べます。
T02従業員所属部署テーブルから4フィールドを設定したクエリビルダーの画面
血液型 → コンボボックス
| プロパティ | 設定値 |
|---|---|
| 値集合タイプ | 値リスト |
| 値集合ソース | A型;B型;O型;AB型;不明 |
役職 → コンボボックス
| プロパティ | 設定値 |
|---|---|
| 値集合タイプ | 値リスト |
| 値集合ソース | 部長;部長代理;次長;課長;課長代理;係長;主任;なし |
権限 → オプショングループ
| プロパティ | 設定値 |
|---|---|
| 既定値 | 1(なし) |
| オプション | 値 |
|---|---|
| なし | 1 |
| 全て | 2 |
| 成形・材料 | 3 |
| 加工 | 4 |
| 印刷 | 5 |
| 品管 | 6 |
| 業務 | 7 |
| 品管と業務 | 8 |
| 営業 | 9 |
コンボボックスとオプショングループへの変更が完了した状態のデザインビュー
- 上書き保存(Ctrl+S)
所属略称・分類の自動連動
所属部署をコンボボックスで選ぶだけで、所属略称と分類が自動的に表示されます。
仕組みはシンプルで、コンボボックスが持っている列データを参照する式をコントロールソースに設定するだけです。
| コントロール | コントロールソースの式 |
|---|---|
| 所属略称 | =[所属部署].[column](2) |
| 分類 | =[所属部署].[column](3) |
[column](番号) はコンボボックスが内部に持つ列を番号で参照する書き方です。クエリビルダーで設定した列の順番(0始まり)と対応しています。
| 列番号 | フィールド |
|---|---|
| column(0) | 所属部署コード |
| column(1) | 所属部署 |
| column(2) | 所属略称 ← ここを参照 |
| column(3) | 分類 ← ここを参照 |
所属部署を選ぶと略称と分類が即座に埋まるので、入力の手間がゼロになります。マスタを更新すれば全フォームに自動反映される点もポイントです。
自動計算フィールドを設定する
年齢・所属略称・分類・従業員コードは、式によって自動的に値が決まるフィールドです。入力不要・編集不可に設定して、誤入力を防ぎます。
手順
- 各コントロールのコントロールソースに以下の式を設定する
自動計算フィールドの式一覧
| コントロール | コントロールソース | 書式 |
|---|---|---|
| 年齢 | =IIf(Format(Date(),"mmdd")<Format([生年月日],"mmdd"),DateDiff("yyyy",[生年月日],Date())-1,DateDiff("yyyy",[生年月日],Date())) |
&歳 |
| 所属略称 | =[所属部署].[column](2) |
― |
| 分類 | =[所属部署].[column](3) |
― |
| 従業員コード | =DMax("ID","T01従業員M")+1 |
― |
年齢の式について 誕生日を迎えているかどうかを
mmddで比較し、まだ迎えていない場合は1を引くことで正確な満年齢を計算します。
読み取り専用のコントロールに設定する
年齢・所属略称・分類・従業員コードのプロパティを読み取り専用に設定する
読み取り専用の設定
| プロパティ | 設定値 |
|---|---|
| 使用可能 | いいえ |
| 編集ロック | はい |
| 背景色 | 背景1, 暗め15%(目視で読み取り専用が確認できる) |
- 上書き保存(Ctrl+S)
入力補助の設定をする
備考フィールドのEnterキー動作・タブオーダー・テキストの文字配置を整えます。細かい設定ですが、実際の入力操作の快適さに直結します。
手順
- 備考テキストボックスのプロパティ →「データ」タブ→「Enterキー入力時動作」を 既定 に変更する
- デフォルトは「フィールドに行を追加」のため、Enterで改行されてしまう。「既定」に変更することで次のフィールドに移動するようになる
- リボン「デザイン」→「タブオーダー」を開き、入力順にタブ移動順を設定する
- 文字配置を中央にした方が見やすいテキストボックスを選択し、プロパティ →「書式」タブ→ 文字配置を 中央 にする
文字配置・タブオーダー設定が完了した詳細部の状態
- 上書き保存(Ctrl+S)
コンボボックスをフォーカス時に自動で開く
雇用区分・役職・血液型のコンボボックスは、フォーカスを取得した瞬間に自動でリストが開くように設定します。クリックやAltキーの操作なしにリストが開くので、キーボード操作だけで選択まで完結します。
手順
- 対象コンボボックスのプロパティシート →「イベント」タブ→「フォーカス取得時」の「…」ボタンをクリック
- マクロビルダーを選択して開く
- アクションに「プロシージャの実行」を選択する
- プロシージャ名に以下を入力する
| コントロール | プロシージャ名 |
|---|---|
| 雇用区分 | [雇用区分].Dropdown |
| 役職 | [役職].Dropdown |
| 血液型 | [血液型].Dropdown |
血液型コンボボックスのフォーカス取得時にDropdownを設定したマクロビルダー
- 保存してマクロビルダーを閉じる
- 上書き保存(Ctrl+S)
ボタンを設置してフォームを完成させる
フォームフッターに登録・キャンセル・閉じるボタンを配置し、権限フィールドからのフォーカス移動先を設定します。
手順
- フォームフッターにある「閉じる」ボタンをコピー&ペーストして2つ追加する
- ボタンのプロパティシート →「その他」タブ→「名前」をそれぞれ 登録・キャンセル に変更する
- 名前はマクロから呼び出すため、必ずこの名前にすること
- ボタンの配置を整える(登録・キャンセルを左側、閉じるを右側)
- 上書き保存(Ctrl+S)
- 権限コントロールのプロパティシート →「イベント」タブ→「フォーカス損失時」の「…」ボタンをクリック
- マクロビルダーを選択して開く
- アクションに「コントロールの移動」を選択し、コントロール名に 登録 と入力する
コントロールの移動アクションでコントロール名に「登録」を設定した状態
- 保存してマクロビルダーを閉じる
- 上書き保存(Ctrl+S)
登録ボタンの自動フォーカス移動
タブオーダーの最後にある権限フィールドを抜けると、自動的に登録ボタンにフォーカスが移動します。
フォーカス損失時のマクロで「コントロールの移動:登録」を設定しているだけですが、これによってキーボードだけで入力から登録まで完結できます。
操作の流れ
- 権限のオプションを選択
- Tabキーで次へ → 登録ボタンに自動でフォーカス移動
- Enterキーで登録実行
マウスに手を伸ばす必要がなくなるので、大量データの連続登録作業では体感できるくらい速くなります。
完成したフォームを確認する
デザインビューとフォームビューで最終確認します。
完成したデザインビュー全体
完成したフォームビュー全体
フォームの背景色が青系になっているのは、新規登録フォームのサインです。編集フォームは黒系で統一しているため、開いた瞬間に「今何をする画面か」が色で判断できます。
タグ:青系の画面はこのシステムにおける新規登録のサイン
サブフォームを親フォームに実装する
サブフォームの作り方
一覧表示フォームの土台。単票・ポップアップと違い、クエリを挟む設計が前提になる。ウィザードで素早く形を作り、プロパティで仕上げるのが基本の流れ。 テンプレート(サブフォーム)の完成形 テンプレート(サブフォーム)を実装し[…]
サブフォームの実装例
取引先マスタの一覧画面です。取引区分のオプショングループと4つの検索条件を組み合わせて絞り込みができます。コード・取引先名・略称・フリガナのいずれかを入力するたびにリストがリアルタイムで絞り込まれる設計です。 取引先リスト[…]
まとめ
テンプレポップアップフォームをベースに、従業員マスタの新規登録フォームを作る手順を紹介しました。
| 工程 | 内容 |
|---|---|
| ① テンプレコピー | フォームの土台を即座に用意 |
| ② レコードソース一時設定 | フィールドリストから名前・型揃えて配置 |
| ③ 非連結に戻す | マクロ制御のためテーブルとの接続を切り離す |
| ④ 書式統一・配置 | 全選択一括変更で効率よく整える |
| ⑤ コントロール種類変更 | コンボ・オプショングループで入力しやすく |
| ⑥ 自動計算フィールド | 年齢・従業員コードなどを式で自動表示 |
| ⑦ 入力補助設定 | タブオーダー・Enterキー動作・文字配置 |
| ⑧ コンボ自動展開 | フォーカスでリストが即座に開く |
| ⑨ ボタン設置・フォーカス制御 | キーボードだけで登録まで完結 |
テンプレートを起点にすることで、書式や基本設定の作業をほぼゼロにしながら実用的なフォームが仕上がります。次のページでは、このフォームに登録処理のマクロを組み込む手順を紹介します。
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。