Accessのタブコントロールで多機能フォームを構築する|ページ追加・整列・イベント連動の実践手順とMOS試験対策

「フォームに情報を詰め込みすぎてスクロールが長くなった」「入力項目を分類したいが複数フォームに分けると管理が煩雑になる」——そのような悩みを解決するのが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イベントでタブのページ切り替えに連動する処理の流れを示すフロー図

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プロパティ)で設定した値を使います。

顧客管理フォームを基本情報・連絡先・注文履歴・備考の4ページに分割する構成図

実務シナリオ別パターン

シナリオ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試験対策としては、デザインビューでの挿入・ページ追加・プロパティシート操作という基本フローを繰り返し練習することが合格への近道です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次