AccessのフォームでTabキーを押したとき、入力カーソルがどのコントロールへ移動するかを決めるのがタブオーダー(Tab Order)です。デフォルトはフォームにコントロールを配置した順序になりますが、後から配置を変更したり、コントロールを追加したりすると順序が崩れ、操作性が損なわれることがあります。
タブオーダーが意図しない順序になっていると、入力担当者が一覧画面から詳細フォームへ移動したときに「なぜかフォーカスが氏名欄に飛ばず、備考欄から始まる」「ラベルやボタンに余計に止まって邪魔」といった問題が起きます。こうした問題はタブオーダーダイアログで数クリック設定するだけで根本から解消できます。
本記事では、タブオーダーの基本概念、タブオーダーダイアログの操作手順、コントロールのTab Stopプロパティ、VBAのSetFocusメソッドを使った動的フォーカス制御、実務パターン別の設計例、MOS試験の出題ポイントまでを体系的に解説します。
Accessのタブオーダーとは
タブオーダーとは、フォーム上でTabキーを押したときに入力フォーカスが移動する順序のことです。フォームには通常、テキストボックス・コンボボックス・チェックボックス・ボタンなど複数のコントロールが配置されており、タブオーダーによってデータ入力の流れが決まります。
Accessでは、フォームをデザインビューで開き「フォームデザイン」リボンの「タブオーダー」ボタンから専用ダイアログで順序を変更できます。また、個々のコントロールのプロパティシートにある「タブストップ」プロパティを「いいえ」に設定すると、そのコントロールをTabキー移動の対象から除外できます。
タブオーダーが崩れる主な原因
- コントロールを後から追加した場合:追加した順序がタブオーダーに反映されるため、画面上の配置と一致しないことがある
- フォームをコピー・貼り付けで作成した場合:元フォームのタブオーダーを引き継ぐため、新しいフォームの配置と食い違う
- コントロールを移動・削除した場合:順序の番号が詰まらず「抜け」が生じることがある
- サブフォームを埋め込んだ場合:サブフォーム内のタブオーダーは別に管理されるため、全体の流れが把握しにくくなる
タブオーダーダイアログの操作方法
タブオーダーダイアログを使うと、フォーム上のすべてのコントロールのタブ移動順序を一覧で確認・変更できます。
タブオーダーダイアログを開く手順
- ナビゲーションウィンドウでフォームを右クリックし、「デザインビュー」を選択する
- リボン「フォームデザイン」タブの「ツール」グループにある「タブオーダー」ボタンをクリックする
- 「タブオーダー」ダイアログが表示される
ダイアログには「セクション」と「ユーザー設定の順序」の2つの領域があります。「セクション」では「フォームヘッダー」「詳細」「フォームフッター」を切り替えられます。「ユーザー設定の順序」には、そのセクションに配置されたコントロール名が現在のタブ移動順で縦に一覧表示されます。
タブオーダーを変更する手順
- 「ユーザー設定の順序」リスト内で変更したいコントロール名の行の左端(選択ハンドル)をクリックして行を選択する
- 選択した行をドラッグして目的の位置に移動する(行の上下に水平線が表示される位置でドロップする)
- 複数行を選択したい場合は、選択ハンドルをShiftキーを押しながらクリックしてまとめて選択できる
- 「OK」をクリックして変更を確定する
- フォームを保存する(Ctrl+S)
自動設定ボタンの活用
タブオーダーダイアログには「自動設定」ボタンがあります。このボタンを押すと、フォーム上のコントロールの配置位置(上から下・左から右)に基づいてタブオーダーが自動で並び替わります。コントロールの並びが整っているフォームであれば、自動設定を使うことで手作業による並び替えを省略できます。
ただし、フォームが複数列レイアウトになっている場合(例:左列に氏名・住所、右列に電話・メール)は、自動設定が「左列を上から下に全部→右列を上から下」という順序になり、業務の入力フローと一致しないことがあります。その場合は手動でドラッグして修正します。
| ボタン | 動作 | 使いどころ |
|---|---|---|
| 自動設定 | コントロールの画面上の位置(上から下・左から右)で自動並べ替え | 1列レイアウトで整然と並んでいる場合 |
| OK | 変更を確定してダイアログを閉じる | 並び替え完了後 |
| キャンセル | 変更を破棄してダイアログを閉じる | やり直したい場合 |
Tab Stopプロパティでコントロールをスキップする
ラベル・区切り線・画像・計算専用テキストボックスなど、データを入力しないコントロールはTabキーによるフォーカス移動の対象から除外するのが基本です。これを設定するのが、コントロールのプロパティシートにある「タブストップ(Tab Stop)」プロパティです。
Tab Stopプロパティの設定手順
- デザインビューでフォームを開く
- Tabキー移動から除外したいコントロールをクリックして選択する
- プロパティシートが表示されていない場合はF4キーを押して開く
- 「その他」タブをクリックする
- 「タブストップ」プロパティを「いいえ」に変更する
- フォームを保存する
「タブストップ」を「いいえ」にしても、マウスクリックでそのコントロールにフォーカスを移すことはできます(読み取り専用の表示用テキストボックスなど)。Tabキー操作だけが対象外になります。
タブストップを「いいえ」にすべきコントロール
| コントロール種別 | 推奨設定 | 理由 |
|---|---|---|
| ラベル | いいえ(既定値) | ラベルはデフォルトでタブストップ「いいえ」。変更不要 |
| コマンドボタン(確認・閉じる以外) | いいえ | 入力フローの途中でボタンに止まると誤操作を招く |
| 計算専用テキストボックス(連結なし) | いいえ | 表示専用のため入力不要。スキップして次へ進む |
| 区切り線・画像・長方形 | いいえ(既定値) | 装飾コントロールは入力対象外 |
| 自動入力コンボボックス(コード→名称変換) | いいえ(用途次第) | コードを入力したら名称が自動表示される連動コンボはスキップ可 |
タブインデックスプロパティとの違い
プロパティシートの「その他」タブには「タブストップ」のほかに「タブインデックス(Tab Index)」プロパティもあります。タブインデックスは数値で順序を直接指定する方法で、タブオーダーダイアログで設定した順序に対応した整数(0から始まる)が格納されます。直接数値を編集してもタブ順序を変更できますが、一覧で視覚的に確認しながら操作できるタブオーダーダイアログを使う方が実務では扱いやすいです。
VBAのSetFocusメソッドで動的にフォーカスを制御する
タブオーダーは静的な設定ですが、入力内容によってフォーカスの移動先を変えたい場合はVBAのSetFocusメソッドを使います。SetFocusは指定したコントロールにフォーカスを強制移動するメソッドで、フォームのイベントプロシージャと組み合わせることで柔軟なフォーカス制御が実現できます。
SetFocusの基本構文
Me.コントロール名.SetFocus
Meは現在のフォーム自身を指すキーワードです。コントロール名にはプロパティシートの「名前」プロパティに設定した名前を使います。スペースを含むコントロール名の場合は Me![コントロール名].SetFocus のように角括弧で囲みます。
想定例:種別コンボボックスの値によって次の入力先を切り替える
以下は、「種別」コンボボックスで「法人」が選択されたときは「会社名」テキストボックスにフォーカスを移し、「個人」が選択されたときは「氏名」テキストボックスに移動する想定例です(架空のフォーム・フィールド名を使用)。
Private Sub 種別_AfterUpdate()
If Me.種別 = "法人" Then
Me.会社名.SetFocus
Else
Me.氏名.SetFocus
End If
End Sub
このコードは「種別」コンボボックスの「AfterUpdate(更新後)」イベントに記述します。コンボボックスで選択が確定するたびにイベントが発火し、選択値によってフォーカス先が切り替わります。
よくあるつまずき:SetFocusがエラーになるケース
| エラーの状況 | 原因 | 対処法 |
|---|---|---|
| 「このコントロールにフォーカスできません」 | 対象コントロールが非表示(Visible=No)または使用不可(Enabled=No)になっている | SetFocusの前に Me.コントロール名.Visible = True または Enabled = True を実行する |
| 「フォームが編集モードでない」エラー | フォームが読み取り専用の場合にデータコントロールにSetFocusしようとしている | フォームのDataEntryまたはAllowEditsプロパティを確認する |
| BeforeUpdateイベント内でSetFocusすると無限ループ | BeforeUpdateイベント中にSetFocusするとイベントが連鎖する | AfterUpdateイベントかButtonのClickイベントに移動する |
| コントロール名が合わない | コントロール名にスペースや特殊文字が含まれている | Me![名前 スペース].SetFocus のように角括弧で囲む |
実務パターン別タブオーダー設計5選
パターン1:受注入力フォームで左上から右下へ順序を整える
受注入力フォームでは「受注日→顧客コード→顧客名(自動表示)→品名→数量→単価→小計(計算値)→備考→確定ボタン」のような入力フローが一般的です。
タブオーダーダイアログで「自動設定」を押した後、「顧客名(自動表示)」テキストボックスと「小計(計算値)」テキストボックスを並びから除外するため、それぞれのプロパティシートで「タブストップ」を「いいえ」に設定します。確定ボタンは最後の「備考」の次に来るようにタブオーダーを設定します。
パターン2:2列レイアウトで列をまたいだ入力順を設計する
顧客登録フォームが「左列:氏名・生年月日・性別」「右列:電話番号・メールアドレス・郵便番号」という2列配置になっている場合、自動設定では「左列を上から下→右列を上から下」の順序になります。
業務上「氏名→電話番号→メールアドレス→生年月日→性別→郵便番号」という順序が望ましければ、タブオーダーダイアログで手動ドラッグして並べ替えます。「自動設定」には頼らず、業務フローに合わせた順序を手作業で定義します。
パターン3:サブフォームを含む複合フォームのフォーカス設計
メインフォームに受注ヘッダー、サブフォームに明細行を持つ複合フォームでは、メインフォームのタブオーダーとサブフォーム内のタブオーダーは独立して管理します。
メインフォームでサブフォームコントロールの位置(タブオーダー内での番号)を決めると、Tabキーを押したときにサブフォームの先頭コントロールにフォーカスが入ります。サブフォーム内でのTab移動はサブフォームのタブオーダー設定に従います。サブフォームから抜けてメインフォームに戻るときはCtrl+TabまたはEscを案内する運用が一般的です。
パターン4:確認画面で編集不可フィールドを全スキップする
登録内容の確認・承認フォームでは、テキストボックスが読み取り専用(使用不可)になっており、「承認」「差し戻し」ボタンのみ操作対象です。この場合、すべての表示用テキストボックスの「タブストップ」を「いいえ」にして、タブキーを押すと「承認ボタン→差し戻しボタン→閉じるボタン」とボタン間だけを移動するようにします。
「承認ボタン」に「既定値(Default)」プロパティを「はい」に設定しておくと、Enterキーでも承認ボタンが押せるため、キーボード操作性がさらに向上します。
パターン5:条件によってコントロールを動的に有効化・無効化してタブを制御する
「会員区分」で「一般」を選ぶと「会員番号」欄が非活性になり、「会員」を選ぶと活性化するフォームでは、コントロールのEnabledプロパティをVBAで切り替えることでタブ移動から動的に除外できます。
Private Sub 会員区分_AfterUpdate()
If Me.会員区分 = "会員" Then
Me.会員番号.Enabled = True
Me.会員番号.SetFocus
Else
Me.会員番号.Enabled = False
Me.次のフィールド.SetFocus
End If
End Sub
Enabled=Falseにしたコントロールはタブストッププロパティの設定に関わらずTabキー移動の対象から外れるため、「タブストップ」のON/OFFを別途切り替える必要はありません。
MOS試験でのタブオーダー出題ポイント
MOS Access 365試験では、フォームの編集・操作に関するスキルとしてタブオーダーの設定が含まれます。試験問題では「フォームのコントロールのタブ移動順序を変更してください」のような指示が出され、実際にダイアログを操作して順序を変更する問題が出題されます。
- タブオーダーダイアログの起動方法:デザインビュー→「フォームデザイン」リボン→「タブオーダー」ボタンを操作できる
- 順序の変更:ドラッグ操作で指定のコントロールを目的の位置に移動できる
- 自動設定の意味と使い方:「自動設定」ボタンが位置基準で並べ替えることを理解している
- タブストッププロパティの設定:プロパティシート「その他」タブの「タブストップ」を「いいえ」に変更できる
- セクション別の設定:フォームヘッダー・詳細・フォームフッターのセクションごとにタブオーダーが管理されることを知っている
MOS試験 タブオーダー操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| デザインビューを開ける | フォームを右クリック→「デザインビュー」を選択できる | ★☆☆ |
| タブオーダーダイアログを開ける | 「フォームデザイン」リボンの「タブオーダー」ボタンをクリックできる | ★☆☆ |
| 順序を手動で変更できる | リスト内の行を選択して目的の位置にドラッグできる | ★★☆ |
| 自動設定を実行できる | 「自動設定」ボタンを押して位置基準で順序をリセットできる | ★☆☆ |
| タブストップを「いいえ」に設定できる | プロパティシート「その他」タブの「タブストップ」を変更できる | ★★☆ |
| フォームをフォームビューで動作確認できる | フォームビューに切り替えてTabキー動作を確認できる | ★★☆ |
まとめ:タブオーダーの最適化でAccessフォームの操作性を高める
本記事のポイントをまとめます。
- タブオーダーとは:Tabキーを押したときにフォーカスが移動するコントロールの順序。コントロールを後から追加・移動すると崩れるため定期的な確認が必要
- タブオーダーダイアログ:「フォームデザイン」リボン→「タブオーダー」で開く。一覧をドラッグして並べ替え、「自動設定」で位置基準のリセットも可能
- Tab Stopプロパティ:プロパティシート「その他」タブの「タブストップ」を「いいえ」にすると、そのコントロールをTabキー移動から除外できる。計算値・自動表示コントロール・装飾ボタンに活用する
- SetFocusメソッド:VBAで
Me.コントロール名.SetFocusと書くと、任意のタイミングで指定コントロールへフォーカスを移せる。入力内容によってフォーカス先を動的に切り替える処理に有効 - MOS試験では:デザインビューでタブオーダーダイアログを開き、手動ドラッグと自動設定の両方の操作、タブストッププロパティの変更を確実に行えるようにしておく
タブオーダーの整備は地味な設定ですが、入力担当者の操作性に直結する重要な仕上げ工程です。フォームを公開・配布する前に、必ずフォームビューでTabキーを押して実際の移動順序を確認する習慣をつけましょう。MOS試験でも実操作が求められるため、デザインビューとプロパティシートの両方でアクセスできる状態にしておくことが合格への近道です。
PR
MOS試験シリーズの定番対策書。Accessのフォーム操作・タブオーダー設定を含むデータベース管理スキルを試験形式で演習できます。操作手順の確認から模擬問題まで一冊で網羅しており、試験直前の総仕上げにも最適です。
PR
たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】
VBAを使ったOffice自動化の考え方を基礎から解説。AccessのSetFocusメソッドやイベントプロシージャを組み合わせた動的フォーカス制御に応用できる考え方が身につき、単純な操作手順の習得を超えたフォーム設計力を伸ばしたい方に適した一冊です。
