概要
| この記事の結論 Accessのカーソル移動順は、フォームをデザインビューで開き、[タブオーダー]で変更します。入力欄を飛ばす場合は[タブストップ]、最後の項目からの移動先はフォームの[タブ移動]で設定します。ページを切り替えるタブコントロールとは別の機能です。Enterキーは入力欄やAccess本体の設定によって動作が変わります。 |
この記事でわかること
- 移動順はタブオーダーで設定する
- TabStopは編集禁止ではない
- 最後の移動先はCycleで決める
- TabとEnterを別々に試す
この記事の主な内容
- タブオーダーとタブコントロールの違い
- タブオーダーを変更する基本手順
- タブストップと編集可否を使い分ける
- 最後の入力欄からの移動先と保存の関係
- サブフォームとタブページで移動順を整える
- 移動順が変わらない原因とキーボード操作の確認
- まとめ
- よくある質問
想定読了時間:約16分~20分
タブオーダーとタブコントロールの違い
フォームでTabキーを押したときのカーソル移動順を設定する機能は、タブオーダーです。ページを切り替える部品の「タブコントロール」とは役割が異なります。「タブコントロールでカーソル移動順を変えたい」と調べている方は、まずタブオーダーを確認してください。
入力欄の並びが上から下、左から右でも、実際の移動がその順番とは限りません。フォームを後から修正して入力欄を追加した場合などは、見た目と移動順がずれることがあります。手の動きに合わせて順番を整えると、入力中にマウスへ持ち替える回数を減らせます。
フォーカスがどこにあるかを意識する
キーボードの入力を受け付ける対象が選ばれている状態を、フォーカスがあるといいます。テキストボックスでは文字の挿入位置、ボタンでは選択枠などが目印になります。タブオーダーは、このフォーカスを次の部品へ移す順番です。
| 用語・機能 | 決めること | 使用例 |
|---|---|---|
| タブオーダー | Tabで移る全体の順番 | 氏名、電話、備考の順にする |
| タブ移動順 TabIndex | 個々の部品の順番の番号 | 最初の欄を0にする |
| タブストップ TabStop | Tabでその部品へ止まるか | 自動計算欄を飛ばす |
| タブ移動 Cycle | 最後の欄の次にどこへ移るか | 同じレコードの先頭へ戻す |
| タブコントロール | 表示するページ | 基本情報と詳細情報を切り替える |

TabとEnterは同じとは限らない
Tabは移動順の確認に使いやすいキーです。EnterはAccess本体の設定やテキストボックスの[Enterキー入力時動作]によって、次の欄への移動、改行などの動作が変わります。「Tabでは正しいがEnterでは違う」場合は、別の設定を調べる必要があります。[5]
日本語入力中のEnterは、変換の確定に使われる場合もあります。入力内容を確定する操作と、次の欄へ進む操作を混同せず、日本語を入力する普段の手順で確かめてください。
タブオーダーを変更する基本手順
フォームをデザインビューで開き、タブオーダーの一覧で項目を並べ替えます。まず、利用者がどの順にデータを入力するのかを決めてから設定すると、単に画面の位置へ合わせるだけではない改善ができます。
変更前に入力の順番を決める
説明用に、F_顧客へ氏名、電話、備考、確認ボタンが並ぶ画面を考えます。既存フォームを直す場合は、変更前のコピーを残し、現在のTab操作も一度記録します。画面が複雑な場合は、入力欄の名前と表示ラベルを対応させておくと作業しやすくなります。
| 入力の順番 | コントロール名の例 | 目的 |
|---|---|---|
| 1 | txt氏名 | 対象者を入力 |
| 2 | txt電話 | 連絡先を入力 |
| 3 | txt備考 | 必要な補足を入力 |
| 4 | cmd確認 | 内容を確認する操作へ進む |
例えば、郵便番号を入力すると住所の一部が補われる画面なら、郵便番号から住所の残りへ進む順番に意味があります。入力した値に応じて欄が無効になる画面は、その条件が変わった場合の順番も考えます。
タブオーダー画面で並べ替える
1. ナビゲーションウィンドウで対象フォームを右クリックし、[デザインビュー]を開きます。
2. [フォームデザイン]タブなどの[タブオーダー]を開きます。表示位置はAccessの版によって確認してください。
3. 変更するセクションを選びます。詳細、フォームヘッダー、フォームフッターなどを取り違えないようにします。
4. 項目の左側の選択部分を使い、入力したい順番へドラッグします。
5. [OK]で確定し、フォームの設計を保存します。
6. フォームビューで先頭の入力欄を選び、Tabを順に押して確認します。
一覧の項目名が「テキスト12」などのままなら、先にプロパティシートで対象を確認してください。名前を分かりやすく変える場合も、VBAや式から参照されていないか確認し、むやみに一括変更しないようにします。

自動設定は出発点として使う
タブオーダーの自動設定は、上から下、左から右の順番を作る際に利用できます。ただし、複数列のフォームや、業務上の入力順が画面配置と違う場合には、そのままでは使いにくいことがあります。
自動設定後も、実際に入力しながら順番を確認します。画面の見た目が整っていても、確定ボタンへ早く移りすぎる、必要な確認欄を飛ばすといった問題は、操作しないと気付きにくいためです。
タブ移動順の番号は0から始まる
個々のコントロールのプロパティでは、タブ移動順を数値で確認できます。VBAでの名称はTabIndexです。最初が0、次が1というように数えます。途中の番号を変えると、ほかのコントロールの番号も調整されます。
| コントロール | 入力の順番 | TabIndexの例 |
|---|---|---|
| txt氏名 | 最初 | 0 |
| txt電話 | 2番目 | 1 |
| txt備考 | 3番目 | 2 |
| cmd確認 | 4番目 | 3 |

すべての番号を手作業で書き直すより、タブオーダーの一覧で並べ替えた後に、必要な箇所の番号を確認するほうが全体を把握しやすくなります。番号を変えたら、他の項目も含めて最終的な並びを確認しましょう。
タブストップと編集可否を使い分ける
Tabで飛ばしたい入力欄は、タブストップを[いいえ]にします。ただし、この設定は編集禁止ではありません。使用可能なコントロールなら、マウスでクリックして選択できる場合があります。
自動計算欄を飛ばす設定
数量と単価から計算した金額など、通常は手入力しない欄は、毎回Tabで止まる必要がないことがあります。対象コントロールを選び、プロパティシートの[その他]または[すべて]から[タブストップ]を[いいえ]に設定します。
一方で、毎回確認すべき項目を単に飛ばすと、確認漏れが増える可能性があります。入力しない項目でも、読み上げやコピーのために選択できる必要があるか、利用者の操作を確認して判断してください。
使用可能と編集ロックを区別する
テキストボックスで編集だけを止めたいなら[編集ロック]、操作自体を無効にしたいなら[使用可能]を検討します。タブストップは、移動の効率を整えるための設定です。セキュリティやデータ変更の権限制御を、この設定だけで実現できるとは考えないでください。
| 目的 | 主に確認する設定 | 注意点 |
|---|---|---|
| Tabでは飛ばす | TabStop=いいえ | クリック操作はできる場合がある |
| テキストを編集させない | Locked=はい | 選択やコピーを残す設計も可能 |
| 操作を無効にする | Enabled=いいえ | フォーカスを受け取れなくなる |
| 欄を非表示にする | Visible=いいえ | 見せる条件が変わる場合も確認 |

確認や保存のボタンをTabの対象から外すと、キーボード中心の利用者が操作しにくくなることがあります。「入力欄だけに止める」ことを一律の正解にせず、最後の確認操作までキーボードで完了できるかを見て決めましょう。
非表示や無効のコントロールは、タブオーダーの一覧に残っていてもフォームビューでは飛ばされます。「番号どおりに動かない」と感じたら、移動順だけでなくその時点の表示・使用可能状態を確認してください。
最後の入力欄からの移動先と保存の関係
最後の項目から次のレコードへ進むか、同じレコードの先頭へ戻るかは、フォームの[タブ移動]で設定します。英語名はCycleです。連続してデータを入力する画面と、1件を慎重に確認する画面では、適切な動作が異なります。
フォーム全体のプロパティを選ぶ
デザインビューでプロパティシート上部の選択対象を[フォーム]に切り替えます。[その他]または[すべて]から[タブ移動]を探し、業務に合う動作を選択します。個々のテキストボックスのタブ移動順とは別の設定です。
| Cycleの設定 | 最後の欄でTabを押したとき | 向いている例 |
|---|---|---|
| 全レコード | 次のレコードの先頭へ移る | 複数件を続けて入力する |
| カレントレコード | 同じレコードの先頭へ戻る | 1件ごとの確認を重視する |
| カレントページ | 同じフォームページの先頭へ戻る | 改ページを使うフォーム |

[カレントページ]のページは、改ページコントロールで区切られたフォームページを指します。タブコントロールのページ切替と、同じ意味で扱わないでください。改ページがなければ、カレントレコードと同様の動作になります。
レコード移動と保存の関係を確認する
連結フォームで別のレコードへ移る際は、変更したレコードの保存が関係します。必須項目が足りないなどの理由で保存できなければ、想定した移動が完了しないことがあります。カーソルが進まないときは、入力規則や更新前処理のメッセージも確認してください。
Cycleをカレントレコードにしても、「利用者が保存ボタンを押すまで絶対に保存しない」という仕組みにはなりません。フォームを閉じる操作など、別の保存経路があります。保存の許可条件は、テーブルの制約やフォームの更新前処理で別に設計します。
業務に合わせて最後の項目を選ぶ
入力が終わったら内容確認へ進めたい画面なら、確認ボタンをタブオーダーに含める方法があります。ボタンの名前と役割を分かりやすくし、その後に同じレコードへ戻るのか、次の入力へ進むのかも明確にします。
一覧へ入力し続ける画面では、次のレコードに進む動作が効率的な場合もあります。意図しない新規レコードを作りやすくないか、最後の既存レコードの後に何が起きるかまで確認してください。
サブフォームとタブページで移動順を整える
サブフォームには、親フォームとは別のタブオーダーがあります。親の一覧でサブフォームコントロールの位置を変えても、その中の明細項目の順番まで一緒に変わるわけではありません。外側と内側を分けて設定します。
親フォームと明細フォームを分けて確認する
例えば受注画面で、親フォームに顧客名と受注日、サブフォームに商品と数量がある場合、親から明細へ入る順番と、明細内を進む順番をそれぞれ決めます。サブフォームのフォームオブジェクトをデザインビューで開き、内部のTabIndexとCycleを確認します。
親のCycleを変更しても、サブフォーム内でのTab操作はサブフォーム側の設定が関係します。どちらのフォームのプロパティを開いているのかを、名前で確認しながら作業してください。
サブフォームの外へ出る操作
サブフォーム内から外へフォーカスを移す操作にはCtrl+Tabを使います。親フォームへ戻った後、次に止まる部品が適切かも確認しましょう。利用者がこの操作を知らない場合は、短い操作案内を画面や手順書へ入れる方法があります。

サブフォームの中で次の行へ進むことと、親フォームの次の欄へ進むことは違います。「Tabが明細から出ない」という相談では、明細を連続入力する想定なのか、1行で外へ出たいのかを先に確認すると、設計判断がしやすくなります。
タブページ上の部品は所属を確認する
タブコントロールに複数のページがある場合は、各ページへ実際に配置されている部品の順番を確認します。ページの上に重なって見えていても、フォーム本体に配置された部品だと、表示や移動が想定と異なることがあります。
デザインビューで部品を選び、タブページを切り替えたときの表示を確認します。別ページを使う利用者の入力順も含めて試し、表示されていないページの項目へ無理にフォーカスを移すコードがないか調べてください。
入力フォームの操作性改善を相談する
設定を見直しても解消しない場合や、複数のフォーム・保存先への影響が分からない場合は、対象画面と再現手順を整理してご相談ください。
移動順が変わらない原因とキーボード操作の確認
順番を変更しても期待どおりに動かない場合は、どのキーで、どの欄から、どこへ移るかを記録します。TabとEnterの現象を分けるだけでも、タブオーダーとキー入力処理のどちらを調べるべきかが見えてきます。
設定範囲とイベント処理を確認する
フォームヘッダーだけを変更して詳細を確認していた、親フォームを変更したのに明細内の順番を期待していた、という取り違えがあります。また、既存のVBAにSetFocusやキー入力のイベント処理があると、通常の移動先が変更されることがあります。
| 症状 | 確認する内容 |
|---|---|
| 設定した順番が全く反映されない | 保存したフォーム名、ファイル、配布版 |
| 一部の入力欄だけ飛ばされる | TabStop、Visible、Enabled |
| Enterだけ動作が違う | Enterキー入力時動作、Access本体の設定、キーイベント |
| 明細内の順番だけ違う | サブフォーム自身のタブオーダー |
| 最後に別のレコードへ移る | フォームのCycle |
| 移動しようとするとエラーになる | 入力規則、必須項目、BeforeUpdate |
| 特定の条件だけ別の欄へ飛ぶ | SetFocusなどの条件分岐 |

既存イベントを見つけても、ただ削除しないでください。入力補助や業務上の必須確認を担っている可能性があります。検証用コピーで処理の目的を確認し、プロパティだけで足りる部分と、条件付きの制御が必要な部分を整理します。
キーボードだけで作業を完了できるか試す
通常の入力例を1件用意し、最初の欄から最後の操作までキーボード中心で進めます。続いて、逆方向に戻る、未入力のまま進む、誤入力して直す、といった操作を試します。順番が正しいだけでなく、行き詰まったときに修正できることも確認します。
| 操作 | 確認する結果 |
|---|---|
| Tabで前進 | 業務上の入力順に移る |
| Shift+Tabで戻る | 修正したい欄へ戻れる |
| Enterを押す | 移動か改行かが欄の用途に合う |
| 日本語変換を確定する | 確定と移動を混同しない |
| サブフォームでCtrl+Tab | 親フォーム側へ出られる |
| 必須欄を空にして進む | 案内が表示され、修正できる |
| 非表示・無効になる条件を切り替える | 不自然な移動やエラーがない |
| 最後の欄から進む | 次のレコードか同じレコードかが意図どおり |

フォーム改修の確認項目として残す
入力欄を追加、移動、削除したときは、タブオーダーの見直しも作業に含めます。追加した欄が見た目では途中にあっても、Tabの順番では最後になっていることがあるためです。
複数の担当者が同じフォームを修正するなら、コントロール名、主要な移動順、最後の操作、特殊なキー制御を記録します。レイアウト変更だけのつもりでも、入力する人の操作が変わることを共有しておくと、改修後の問い合わせを減らしやすくなります。
まとめ
Accessのカーソル移動順はタブオーダーで整えます。TabIndexは順番、TabStopは止まるかどうか、Cycleは最後の欄からの移動先を決める設定です。タブコントロールによるページ切替とは区別してください。
Enterの改行、入力規則、サブフォーム、既存VBAも移動の体験に関係します。設定後はTabだけでなく、戻る操作や日本語入力、最後の保存まで通して試し、利用者の作業手順に合うフォームに仕上げましょう。
入力フォームの操作性改善を相談する
Accessの教科書では、既存Accessの調査・改修・保守をご相談いただけます。フォーム名、症状、発生する操作、変更した設定が分かると、確認すべき範囲を整理しやすくなります。
よくある質問
移動順を変えるだけなら不要です。フォームのタブオーダーで設定します。タブコントロールは、基本情報と詳細情報などをページに分けるための部品です。
常に同じではありません。テキストボックスのEnterキー入力時動作やAccess本体の設定、日本語入力、キーイベントなどが関係します。Tabとは別に確認してください。
編集禁止にはなりません。Tabで止まらなくなる設定です。編集を制限する場合は、編集ロックや使用可能などを目的に応じて確認します。
フォームのタブ移動をカレントレコードにすると、最後の欄から同じレコードの先頭へ戻れます。ただし、保存を禁止する設定ではありません。
Ctrl+Tabで外側へ移動します。明細内を進む順番はサブフォーム側、外に出た後の順番は親フォーム側も確認してください。
別のセクションやサブフォームを設定している、欄が非表示や無効になっている、SetFocusなどで移動先を変えている、といった原因を確認します。
参考情報
[1] Set the tab order for controls 参照内容:タブオーダー設定手順
https://support.microsoft.com/en-us/access/set-the-tab-order-for-controls
[2] TextBox.TabIndex 参照内容:0起点の順番と再採番
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.tabindex
[3] TextBox.TabStop 参照内容:移動対象とクリック
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.tabstop
[4] Form.Cycle 参照内容:最後の欄とサブフォーム
https://learn.microsoft.com/en-us/office/vba/api/access.form.cycle
[5] TextBox.EnterKeyBehavior 参照内容:Enterと改行
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.enterkeybehavior