Accessのサブフォームでメイン・サブ連携を設計する|リンクフィールド設定・データシートビュー切替・集計値表示の実務手順とMOS試験対策
「受注ヘッダーを上に表示し、その受注の明細を下に並べて同時に編集したい」「メインフォームで顧客を選んだら、関連する案件がサブフォームに自動で絞り込まれる画面を作りたい」――Accessの帳票入力をレベルアップするときに必ず登場するのがサブフォームです。
サブフォームは一対多のリレーションシップを持つデータを1つの画面上で操作するための仕組みで、習得すると実務レベルのAccessアプリを構築できるようになります。本記事では、サブフォームの作成手順からリンクフィールドの設定・ビュー切替・集計値の表示まで、実務で使える操作を体系的に解説します。MOS Access試験の学習にも役立ててください。

この記事でわかること
- サブフォームとは何か、どんな場面で使うか
- サブフォームウィザードを使ってメインフォームに埋め込む手順
- リンクフィールド(親・子)の意味と正しい設定方法
- サブフォームのビュー(データシート・フォーム・帳票)の切り替え方
- サブフォームフッターに合計・件数などの集計値を表示する方法
- よくあるつまずきと対処方針
- MOS Access試験でサブフォームがどのように問われるか
サブフォームとは
Accessのサブフォームは、メインフォームの内側に別のフォームを入れ子で表示するコントロールです。正確には「サブフォーム/サブレポートコントロール」と呼ばれ、コントロール内に独立したフォームオブジェクトを埋め込む仕組みになっています。
サブフォームが必要になる典型的な場面
一対多のリレーションシップを持つ2つのテーブルを1つの画面で同時に表示・編集したい場合に活用します。
| メインフォームに表示する情報 | サブフォームに表示する情報 |
|---|---|
| 受注ヘッダー(受注ID・受注日・顧客名) | 受注明細(商品名・数量・単価) |
| 顧客情報(顧客ID・氏名・担当者名) | その顧客の案件一覧(案件名・状況・金額) |
| プロジェクト基本情報(プロジェクトID・名称) | タスク一覧(タスク名・担当・期限・進捗) |
メインフォームで受注IDを切り替えると、サブフォームに表示される明細も連動して自動で絞り込まれます。この連動の仕組みを担っているのが「リンクフィールド」です。
サブフォームを作成する前の準備
サブフォームを正しく機能させるには、テーブル間にリレーションシップが設定されていることが理想です。テーブル間の結合フィールド(外部キー)が確定していれば、ウィザードが自動でリンクフィールドを検出してくれます。
前提となるテーブル構成の例(想定例)
以下は一般的な受注管理を想定した例です。実際のDB設計はシステム要件に応じて異なります。
| テーブル名 | 主なフィールド | 役割 |
|---|---|---|
| T受注 | 受注ID(主キー)・受注日・顧客名 | メインフォームの基本テーブル(一側) |
| T受注明細 | 明細ID(主キー)・受注ID(外部キー)・商品名・数量・単価 | サブフォームの基本テーブル(多側) |
リレーションシップを設定するには、「データベースツール」タブ→「リレーションシップ」をクリックし、T受注の「受注ID」とT受注明細の「受注ID」をドラッグ接続します。「参照整合性の設定」にチェックを入れておくと、削除・更新操作時のデータ整合性が保たれます。
サブフォームを作成する手順(ウィザードを使う方法)
Accessではサブフォームウィザードを使うのが最も確実な方法です。操作は主にメインフォームのデザインビューで行います。
手順1:メインフォームをデザインビューで開く
ナビゲーションウィンドウでメインフォームを右クリックし、「デザインビュー」を選択します。まだメインフォームがない場合は、「作成」タブ→「フォームウィザード」でT受注を基にした単票フォームをあらかじめ作成しておきます。
手順2:コントロールウィザードを有効にする
リボン「デザイン」タブの「コントロール」グループにある「コントロールウィザードの使用」ボタンがオン(ハイライト)になっていることを確認します。このボタンがオフになっているとウィザードが起動しません。
手順3:サブフォーム/サブレポートコントロールを配置する
「デザイン」タブの「コントロール」グループにある「サブフォーム/サブレポート」ボタン(フォームとタブが重なったアイコン)をクリックし、フォームのフッター下部やセクション内にドラッグして配置します。マウスボタンを放すと自動的にウィザードが起動します。
手順4:ウィザードでデータソースを選択する
ウィザード最初の画面で「既存のテーブルまたはクエリを使用する」を選択し、「次へ」をクリックします。「テーブル/クエリ」ドロップダウンから「T受注明細」を選び、「選択済みフィールド」に必要なフィールド(明細ID・受注ID・商品名・数量・単価)を追加して「次へ」をクリックします。
手順5:リンクフィールドを確認する
ウィザードの次の画面では、テーブル間のリレーションシップを基にした候補が「定義済みの一覧から選択する」に自動表示されます。「T受注のフィールドとT受注明細のフィールドを使用する:受注ID」が正しく表示されていることを確認して「次へ」をクリックします。リレーションシップが未設定の場合は候補が表示されないため、「自分で定義する」を選んで手動でフィールドを指定します。
手順6:サブフォームの名前を決める
サブフォームのオブジェクト名を入力します(例:「F受注明細 サブフォーム」)。「完了」をクリックするとサブフォームコントロールが配置されます。
手順7:フォームビューで動作を確認する
「表示」ドロップダウンから「フォームビュー」に切り替え、メインフォームのレコードを移動するたびにサブフォームの表示が切り替わることを確認します。
リンクフィールドの設定と変更
サブフォームの動作はリンクフィールドで制御されます。メインフォームのどのフィールドと、サブフォームのどのフィールドを紐づけるかを指定する設定です。
リンクフィールドの確認・変更方法
サブフォームコントロールを選択した状態でプロパティシートを開くと(F4キーまたは「デザイン」タブ→「プロパティシート」)、「データ」タブに次の2つのプロパティが表示されます。
| プロパティ | 役割 | 設定例 |
|---|---|---|
| リンク親フィールド | メインフォーム側の結合フィールド名 | 受注ID |
| リンク子フィールド | サブフォーム側の結合フィールド名 | 受注ID |
複数フィールドでリンクする場合は、セミコロン区切りで複数のフィールド名を列挙します(例:「顧客ID;年度」)。リンクフィールドを空白にするとメインフォームのレコード移動に関係なくサブフォームが全件表示されます。
サブフォームのビューを切り替える
サブフォームに埋め込まれたフォームオブジェクトは、独立したフォームと同様にビューを変更できます。データの種類と用途に合わせて選択します。
サブフォームで使えるビューの種類
| ビュー | 特徴 | 向いている用途 |
|---|---|---|
| データシートビュー | Excelのような行列形式。複数レコードを一覧表示 | 受注明細・タスク一覧など複数行を扱う場合(最も一般的) |
| フォームビュー(単票) | 1レコードを縦に配置した単票形式 | サブフォームが常に1件しか表示しない場合 |
| 帳票フォームビュー | 複数レコードを縦に並べた一覧形式。デザインの自由度が高い | サブフォームに画像や複雑なレイアウトが必要な場合 |
既定のビューを設定する手順
サブフォームとして使うフォームをデザインビューで開き、フォームのプロパティシート(左上の「フォームセレクター」(グレーの四角)をクリック後F4)を表示します。「書式」タブの「既定のビュー」プロパティで「データシート」「単票フォーム」「帳票フォーム」のいずれかを選択して保存します。
よくあるつまずき:サブフォームが水平スクロールで見づらい
サブフォームのコントロール幅が狭いと、フィールドが横スクロールしないと見えなくなります。一般的な対処方法は、デザインビューでサブフォームコントロールの右端をドラッグして幅を広げることです。サブフォーム内のデータシート列幅も、フォームビューで列ヘッダーの境界をドラッグするか右クリック→「フィールドの幅」から個別に調整できます。
サブフォームフッターに集計値を表示する
サブフォームの下部(フォームフッター)に合計や件数を表示すると、メインフォームからサブデータの集計がひと目でわかります。
手順1:サブフォームをデザインビューで開く
ナビゲーションウィンドウからサブフォームのフォームオブジェクト(例:「F受注明細 サブフォーム」)を右クリックし、「デザインビュー」を選択します。
手順2:フォームフッターセクションを表示する
フォームフッターが非表示の場合は、フォームの何もない領域を右クリック→「フォームヘッダー/フォームフッター」をクリックして表示させます。
手順3:テキストボックスを配置して集計式を入力する
フォームフッターに非連結のテキストボックスを追加し、プロパティシートの「コントロールソース」に集計式を入力します。
| 集計内容 | コントロールソースに入力する式(想定例) |
|---|---|
| 金額合計(数量×単価) | =Sum([数量]*[単価]) |
| レコード件数 | =Count([明細ID]) |
| 数量の合計 | =Sum([数量]) |
メインフォームからサブフォームの集計値を参照する
サブフォームの集計値をメインフォーム上のテキストボックスに表示したい場合、メインフォーム側のコントロールソースに次の形式の式を入力します(想定例)。
=[サブフォームコントロール名].Form![集計テキストボックス名]
サブフォームコントロール名が「F受注明細 サブフォーム」、集計テキストボックス名が「txt合計金額」の場合は次のようになります。
=[F受注明細 サブフォーム].Form![txt合計金額]
この参照はメインフォームのレコード移動に連動して自動で再計算されます。
よくあるつまずきと対処方針
「#エラー」や「#名前?」が表示される
メインフォーム側でサブフォームコントロール名や参照するテキストボックス名を間違えている場合に発生します。プロパティシートの「その他」タブで「名前」プロパティを確認し、参照式と一致しているかをチェックしてください。デザインビューでは表示されることがありますが、フォームビューに切り替えると正常に計算されることもあります。
サブフォームの表示が変わらない(全件が表示される)
リンクフィールドが正しく設定されていないか、メインフォームのリンク親フィールドとサブフォームのリンク子フィールドの名前が食い違っている場合に発生します。サブフォームコントロールのプロパティシートで「リンク親フィールド」と「リンク子フィールド」を再確認してください。
サブフォームへのレコード入力ができない
サブフォームの「データ入力用」プロパティや「追加の許可」「削除の許可」「更新の許可」が「いいえ」に設定されている場合があります。サブフォームオブジェクトのプロパティシートの「データ」タブで各プロパティを確認してください。
サブフォームコントロールの中に「サブフォームを開けません」と表示される
サブフォームオブジェクトの名前が変更・削除された場合など、コントロールが参照するフォームオブジェクトが見つからないときに表示されます。サブフォームコントロールの「ソースオブジェクト」プロパティを確認し、正しいフォーム名を指定し直してください。
MOS Access試験との関係
MOS Access 365試験の出題範囲には「フォームの作成と変更」が含まれており、サブフォームの作成・編集はその中の重要なトピックです。
MOS試験で問われる主なサブフォーム関連操作
- フォームのデザインビューでサブフォームコントロールを追加する
- ウィザードでサブフォームのデータソースとリンクフィールドを設定する
- 既存のサブフォームコントロールのリンクフィールドプロパティを変更する
- サブフォームの既定のビュー(データシート・帳票フォーム)を切り替える
- サブフォームのコントロールソースやサイズを調整する
試験時間は50分、採点は1,000点満点です。合格点は公表されていませんが、550点~850点が目安とされています。分野別の出題数・配点は公表されていません。受験料は改定されることがあるため、最新の金額は公式サイト(https://mos.odyssey-com.co.jp/exam/examfee.html)でご確認ください。
学習のポイント
サブフォームの操作は、試験環境のAccess上で実際に手を動かして覚えるのが最も効果的です。受注ヘッダーと受注明細のような一対多テーブルをゼロから作成し、フォームウィザードとサブフォームウィザードを使って画面を構築する練習を繰り返すと、操作の流れが定着します。
学習時間の目安(公式非公表のため目安):初学者で40~60時間程度、業務でAccessを使ったことがある方で20~30時間程度です。1日1時間の学習ペースであれば、初学者で約2か月、経験者で3~4週間が一つの目標です。
PR
MOS試験対策の定番テキスト。Excel 365の一般レベル(MO-210)に対応しており、AccessとExcelを組み合わせた実務環境を意識しながらMOS試験全体の学習を進めたい方にも参考になります。
まとめ
サブフォームはAccessの一対多データを1画面で操作するための中核機能です。本記事のポイントを整理します。
- サブフォームは一対多の多側データを一覧表示するコントロール。リレーションシップの「多側」テーブルをデータソースに指定する
- サブフォームウィザードを使うと、リンクフィールドの候補が自動で表示されるため設定ミスを防ぎやすい
- リンク親フィールド(メイン側)とリンク子フィールド(サブ側)の名前が一致していないと連動しない
- 既定のビューはデータシートが最も一般的。帳票フォームに変更するとレイアウトの自由度が増す
- フォームフッターの集計テキストボックスを使うと合計・件数をリアルタイムに表示できる
- MOS Access試験では、サブフォームの追加・リンクフィールド変更・ビュー切替が出題範囲
サブフォームを使いこなすと、Accessの帳票設計の幅が大きく広がります。まずは一対多のテーブルを用意し、ウィザードを使ってサブフォームを作成する操作を実際に試してみてください。

MOS試験の最新情報・学習ガイドはこちら
試験概要・出題範囲・受験申し込み手順など、MOS試験全般の情報は当サイトの各記事でも解説しています。目的に合わせた記事を活用して、効率よく合格を目指してください。
