「フォームに情報を詰め込みすぎてスクロールが長くなった」「入力項目を分類したいが複数フォームに分けると管理が煩雑になる」——そのような悩みを解決するのがAccessのタブコントロールです。
タブコントロールとは、1つのフォーム内に複数の「ページ」をタブで切り替えられるコンテナです。顧客情報フォームであれば「基本情報」「連絡先」「注文履歴」「備考」の4ページに分割できます。サブフォームや多数のテキストボックスを整理して、実務で使いやすい多機能フォームを構築できます。
本記事では、タブコントロールの挿入から、ページの追加・命名・並び替え・コントロール配置・プロパティ設定・VBAイベント連動まで体系的に解説します。MOS Access試験の出題ポイントとチェックリストも収録しています。

タブコントロールとは
タブコントロール(Tab Control)は、Accessフォームのデザインビューで追加できる特殊なコンテナコントロールです。親コントロールとなるタブコントロールの中に、複数の「ページ(Page)」が内包され、各ページはタブをクリックして切り替えます。
| 用語 | 説明 |
|---|---|
| タブコントロール(Tab Control) | ページを束ねる親コンテナ。フォームに1つ以上配置できる |
| ページ(Page) | タブコントロール内の個別タブ。コントロールを自由に配置できる |
| タブインデックス | ページの表示順序を数値で管理するプロパティ |
| キャプション(Caption) | タブの見出し文字列。ページの「名前」プロパティとは別に設定する |
タブコントロールを使う主な場面は次の通りです。
- 入力項目が多く、スクロール不要の見やすいフォームにしたいとき
- 関連するフィールドをカテゴリ別(基本情報・詳細・履歴など)にまとめたいとき
- サブフォームをページごとに分けて一対多のデータを整理したいとき
- アプリケーション的なUI(設定ダイアログ・ウィザード風)を作りたいとき
タブコントロールの挿入手順
デザインビューでタブコントロールを挿入します。
- フォームをデザインビューで開く(ナビゲーションウィンドウでフォームを右クリック→「デザインビュー」)
- リボンの「フォームデザイン」タブ→「コントロール」グループ→「タブコントロール」ボタン(タブが重なったアイコン)をクリック
- フォーム上でドラッグして配置する。既定で「ページ1」「ページ2」の2ページが作成される
- タブコントロール全体のサイズをドラッグで調整する
配置のポイント:タブコントロールはフォームの大半を占めることが多いため、フォームヘッダーにタイトルラベルを置き、その下にタブコントロールを配置する構成が実務では一般的です。フォームフッターにはナビゲーションボタン(前・次・保存・閉じる)を並べて視認性を保ちます。
ページの追加・削除・名前変更
ページを追加する
タブコントロールにページを追加するには2通りの方法があります。
- 右クリックメニューから追加:タブ部分(ページのタブ見出し)を右クリック→「ページを挿入」を選択。クリックしたタブの右隣に新しいページが追加される
- プロパティシートから確認:追加後にページ一覧がタブコントロールの「ページ」リストに反映される。画面右の「プロパティシート」で各ページのプロパティを管理できる
ページを削除する
削除するページのタブを右クリック→「ページを削除」を選択します。削除すると、ページ内に配置されているコントロールも同時に削除されるため、重要なコントロールは先に他のページへ移動しておきます。
タブの見出し(キャプション)を変更する
変更したいページのタブをダブルクリックするか、ページを選択して「プロパティシート」を開き、「標準」タブの「キャプション」プロパティに見出し文字を入力します。
| プロパティ | 説明 | 設定例 |
|---|---|---|
| 名前(Name) | VBAからページを参照する識別子。英字推奨 | tabBasic、tabContact |
| キャプション(Caption) | タブに表示される見出し文字列 | 基本情報、連絡先 |
| 画像(Picture) | タブにアイコンを表示したい場合にパスを指定 | (アイコンファイルパス) |
| 有効(Enabled) | タブをグレーアウトして選択不可にする(True/False) | False(条件により非活性) |
| 表示(Visible) | ページ自体の表示・非表示を切り替える | False(特定ユーザー向け) |
ページの順序を変更する
ページの並び順を変えるには、並び替えたいページのタブを右クリック→「ページ順序」ダイアログを開きます。リスト内のページ名を選択して「上に移動」「下に移動」ボタンで並び替え、「OK」を押すと反映されます。

各ページへのコントロール配置
ページにコントロールを配置するには、まず目的のページのタブをクリックして「アクティブページ」にしてから、リボンのコントロールを選んでドラッグします。
重要な注意点:コントロールをドラッグで配置する際、タブコントロールの外側(フォーム本体)に配置してしまうと、ページに属さない独立したコントロールになります。ページへの配置成功を確認するには、そのページのタブをクリックしてページを切り替えたとき、コントロールが消えないことを確認します(正しく配置されていれば、他のページに切り替えると表示されなくなります)。
| 配置するコントロール | 操作 | ポイント |
|---|---|---|
| テキストボックス・コンボボックス | 目的ページをアクティブにしてドラッグ | フィールド一覧ウィンドウからドラッグするとラベルも同時生成される |
| サブフォーム | 「サブフォーム/サブレポート」コントロールをページにドラッグ | ページ内にサブフォームを入れると一対多データを各タブで整理できる |
| コマンドボタン | 「ボタン」コントロールをページにドラッグ | ページ固有のアクション(保存・印刷など)を各ページに配置できる |
| ラベル | ラベルコントロールをドラッグ | ページのセクション見出し・説明文に活用 |
既存コントロールをページに移動するには:移動元のコントロールを切り取り(Ctrl+X)→移動先のページのタブをクリックしてアクティブにする→貼り付け(Ctrl+V)。この方法で確実にページに帰属させられます。
PR
MOS Access 365&2019 Expert 対策テキスト&問題集(よくわかるマスター/富士通ラーニングメディア)
MOS Access試験の出題範囲を体系的に演習できる公式教材シリーズ。テーブル・クエリ・フォーム・レポートの操作を試験形式で確認できます。
タブコントロールのプロパティ設定
タブコントロール全体(親コントロール)のプロパティは、タブコントロールの枠線部分をクリックして選択した状態でプロパティシートを開くと設定できます。
| プロパティ | 内容 | 実務での使い方 |
|---|---|---|
| スタイル(Style) | タブの外観スタイル(通常・ボタン・なし) | 「なし」にするとタブ見出しが非表示になりWizard風になる |
| マルチロー(MultiRow) | タブが1列に収まらない場合に複数行に折り返す | ページ数が多い場合はTrueで見切れを防止 |
| タブの位置(TabFixedHeight/Width) | タブ見出しの高さ・幅を固定値で設定 | 0に設定するとフォントサイズに応じて自動調整される |
| 背景色(BackColor) | タブコントロール全体の背景色 | ページ本体の背景色はページ個別プロパティで設定する |
| ページインデックス(Value) | 現在表示されているページのTabIndexの値 | VBAでフォームロード時の初期表示ページを設定するために参照する |

VBAイベントでページ切り替えに連動する
タブコントロールのChangeイベントを使うと、ページが切り替わったタイミングで任意の処理を実行できます。これにより、ページに応じてボタンの有効・無効を切り替えたり、サブフォームを再クエリしたりできます。
基本:Changeイベントでページ番号を取得する
Private Sub TabCtrl_Change()
Select Case Me.TabCtrl.Value
Case 0 ' 1ページ目(基本情報)
Me.cmdSave.Enabled = True
Case 1 ' 2ページ目(連絡先)
Me.cmdSave.Enabled = True
Case 2 ' 3ページ目(注文履歴)
Me.sfOrders.Form.Requery ' サブフォームを再クエリ
Me.cmdSave.Enabled = False
End Select
End Sub
Me.TabCtrl.ValueはアクティブページのTabIndex値(0始まり)を返します。ページ順に対応する処理をSelect Case文で分岐します。TabCtrlの部分はタブコントロールの「名前」プロパティに合わせて変更してください。
応用:フォームロード時の初期ページを固定する
Private Sub Form_Load()
Me.TabCtrl.Value = 0 ' 常に1ページ目(TabIndex=0)を初期表示
End Sub
フォームを閉じて再度開くと最後に表示していたページが復元されることがあります。常に特定のページから始めたい場合はForm_Loadで初期値を設定します。
応用:特定条件でページを非表示にする
Private Sub Form_Current()
' 新規レコードのとき「注文履歴」ページを非表示にする
If Me.NewRecord Then
Me.TabCtrl.Pages("tabOrders").Visible = False
Else
Me.TabCtrl.Pages("tabOrders").Visible = True
End If
End Sub
Pages("ページ名")でページを名前指定してVisibleプロパティを切り替えます。ページ名はページの「名前」プロパティ(Nameプロパティ)で設定した値を使います。

実務シナリオ別パターン
シナリオ1:顧客管理フォームを4ページで整理する
顧客マスタフォームでは入力項目が多くなりがちです。タブコントロールで以下のように分割すると使いやすくなります。
| ページ | キャプション | 配置するコントロール |
|---|---|---|
| 1ページ | 基本情報 | 顧客ID・会社名・担当者名・業種・ステータス |
| 2ページ | 連絡先 | 郵便番号・住所・電話番号・FAX・メールアドレス |
| 3ページ | 注文履歴 | 注文一覧サブフォーム(一対多リレーション) |
| 4ページ | 備考 | 備考テキストボックス(長文用・垂直スクロール付き) |
シナリオ2:受注入力フォームをウィザード形式にする
タブのスタイルを「なし」に設定して、フォームフッターに「前へ」「次へ」ボタンを置くとウィザード形式のUIになります。
' 「次へ」ボタンのクリックイベント
Private Sub cmdNext_Click()
Dim intCurrent As Integer
intCurrent = Me.TabCtrl.Value
If intCurrent < Me.TabCtrl.Pages.Count - 1 Then
Me.TabCtrl.Value = intCurrent + 1
End If
' 最終ページで「完了」ボタンを有効にする
Me.cmdFinish.Enabled = (Me.TabCtrl.Value = Me.TabCtrl.Pages.Count - 1)
End Sub
' 「前へ」ボタンのクリックイベント
Private Sub cmdPrev_Click()
Dim intCurrent As Integer
intCurrent = Me.TabCtrl.Value
If intCurrent > 0 Then
Me.TabCtrl.Value = intCurrent - 1
End If
End Sub
Me.TabCtrl.Pages.Countでページの総数を取得できます。これを使ってボタンの有効・無効を動的に制御します。スタイルを「なし」にしてタブを隠すことで、コードによる画面遷移のみに限定した操作感を作れます。
シナリオ3:設定フォームでユーザー権限に応じてページを制御する
一般ユーザーには「基本設定」ページのみ見せ、管理者ユーザーには「詳細設定」「セキュリティ」ページも表示するという制御が可能です。
Private Sub Form_Open(Cancel As Integer)
Dim blnAdmin As Boolean
blnAdmin = (CurrentUser() = "admin")
Me.TabCtrl.Pages("tabAdvanced").Visible = blnAdmin
Me.TabCtrl.Pages("tabSecurity").Visible = blnAdmin
End Sub
CurrentUser()はAccessの現在ログインユーザー名を返します。ページのVisibleを切り替えることで、フォームを共用しながら権限に応じた情報アクセス制御を実装できます。
PR
今すぐ使えるかんたん Access 2024[Office 2024/Microsoft 365 両対応](井上香緒里)
画面手順つきでデータベース設計から実務操作まで解説する入門書。用語につまずきやすいAccess初学者に向いています。
よくある問題と対処法
| 問題 | 原因 | 対処法 |
|---|---|---|
| 配置したコントロールがタブを切り替えても消えない | コントロールがページではなくフォーム本体に配置されている | 切り取り→目的ページをアクティブにして貼り付けで移動する |
| VBAでPages(“名前”)がエラーになる | ページのNameプロパティ(名前)とキャプション(Caption)を混同している | プロパティシートの「名前」プロパティの値を確認して正確に指定する |
| タブコントロール上でコントロールを選択しにくい | タブコントロールと子コントロールのクリック判定が干渉する | 目的のコントロールをクリック後にEscキーで選択レベルを切り替えるか、プロパティシートのドロップダウンでコントロール名を選択する |
| ページを追加後にページ順が意図と異なる | 「ページを挿入」は選択タブの右隣に挿入される仕様 | 右クリックメニューの「ページ順序」ダイアログで並び替える |
| フォームビューでタブコントロールの背景色が変わらない | テーマが適用されていて個別の背景色より優先される | 「書式」→「テーマ」を「なし」にするかページのBackColorを明示的に設定する |
MOS Access試験でのタブコントロール出題ポイント
MOS Access 365&2019では、フォームデザインのスキル項目としてコントロールの配置・プロパティ設定が出題範囲に含まれます。タブコントロールに関連する出題ポイントは以下の通りです。
- タブコントロールの挿入:デザインビューのリボン「コントロール」グループからタブコントロールを挿入する操作手順を確認しておく
- ページの追加と命名:右クリックメニューから「ページを挿入」し、プロパティシートでキャプションを設定する流れを練習する
- ページ順序の変更:「ページ順序」ダイアログでページを並び替える操作は試験問題で指定されることがある
- コントロールのページへの配置:特定のページに特定のコントロールを配置する操作。ページをアクティブにしてから配置する順序を確実に習得する
- プロパティシートの操作:タブコントロール・個別ページ・ページ内コントロールの3階層のプロパティを正確に操作できること
MOS試験 タブコントロール関連チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| タブコントロールの挿入 | デザインビューで「タブコントロール」ボタンを選択してフォームにドラッグ配置できる | ★☆☆ |
| ページの追加 | タブを右クリック→「ページを挿入」で新しいページを追加できる | ★☆☆ |
| ページキャプションの変更 | プロパティシートの「キャプション」プロパティでタブの見出し文字を設定できる | ★☆☆ |
| ページ順序の変更 | 右クリック→「ページ順序」ダイアログでページを任意の順番に並び替えられる | ★★☆ |
| 特定ページへのコントロール配置 | 目的ページをアクティブにしてからコントロールを追加し、ページ切替時に非表示になることを確認できる | ★★☆ |
| ページプロパティの設定 | ページ個別のNameプロパティ・CaptionプロパティをプロパティシートのNameドロップダウンで対象を選んで設定できる | ★★☆ |
| タブコントロール全体のプロパティ操作 | タブコントロール本体(親)を選択してスタイル・マルチローなど全体プロパティを設定できる | ★★★ |
まとめ:タブコントロールで複雑なフォームを整理する
本記事のポイントをまとめます。
- タブコントロールの役割:1つのフォーム内に複数のページをタブで切り替えて表示するコンテナ。入力フィールドが多いフォームの整理に有効
- ページの管理:タブを右クリックしてページの追加・削除・順序変更を行う。ページのキャプション(見出し)はプロパティシートのCaptionで設定
- コントロール配置の注意:目的ページのタブをクリックしてアクティブにしてからコントロールを配置する。フォーム本体への誤配置に注意
- プロパティの階層:タブコントロール全体・個別ページ・ページ内コントロールの3階層それぞれに独立したプロパティがある
- VBA連動:Changeイベントでページ切り替え時の処理を実装できる。Pages(“名前”).Visibleでページの表示・非表示を動的制御できる
- ウィザード形式:スタイルを「なし」にしてVBAでTabCtrl.Valueを制御するとウィザード型UIが作れる
タブコントロールはAccessフォーム設計の中でも、フォームの使いやすさを大きく左右する重要なコントロールです。サブフォームとの組み合わせや、VBAによる動的制御まで習得することで、ユーザーが直感的に操作できる業務アプリケーションを構築できます。MOS試験対策としては、デザインビューでの挿入・ページ追加・プロパティシート操作という基本フローを繰り返し練習することが合格への近道です。
