Access帳票フォームで選択中レコードをハイライトする方法

更新日:2026/7/25Office

Microsoft Accessの帳票フォームで複数のレコードを表示している際に、選択中のレコードの背景色を自動的に変更して視認性を向上させる方法を解説します。

Accessの帳票フォームで選択中のレコードをハイライト表示した画面

対象OS Windows 10、Windows 11

帳票フォームにおける選択レコードの視認性の課題

Microsoft Accessの帳票フォームは、複数のレコードを一覧表示するのに便利な機能です。しかし、標準の設定では選択中のレコードが分かりづらく、特にレコード数が多い場合は、現在どのレコードを選択しているのか見失いがちです。

この記事では、条件付き書式とVBAを組み合わせて、選択中のレコードの背景色を動的に変更する仕組みを実装します。ヘッダーセクションと詳細セクションにそれぞれテキストボックスを配置し、その値の一致を条件に背景色を変更することで、直感的で使いやすいフォームを作成できます。

ハイライトが動く仕組みと、始める前の準備

先に仕組みを押さえておくと、設定の意味がわかりやすくなります。この方法は、次の3つの部品を組み合わせています。

  • ヘッダーの箱txtSelectedID)…「いま選ばれているレコードのID」を1つだけ覚えておく場所
  • 各行の箱txtDetailID)…その行のIDを表示する場所。行の数だけ存在します
  • 条件付き書式…この2つの値が一致した行だけ、背景色を変えるルール

レコードをクリックすると、VBAがヘッダーの箱にその行のIDを書き込みます。すると条件付き書式が「一致した」と判定し、その行だけ色が変わります。Accessには「選択中の行」を直接取得する機能がないため、このようにIDを突き合わせる形で代用するのが定番の手法です。

始める前に、次の2点を確認してください。

  • 対象のテーブルに、レコードを一意に識別できるフィールド(主キーのIDなど)があること
  • VBAを数行記述するため、Accessでマクロ・VBAが実行できる状態になっていること

ヘッダーセクションにテキストボックスを配置する

選択中のレコードのIDを保持するためのテキストボックスをフォームヘッダーに配置します。フォームヘッダーセクションが表示されていない場合は、フォームを右クリックして「フォームヘッダー/フッター」を選択して表示させてください。

  1. 「フォーム デザイン」タブから「テキストボックス」を選択し、フォームヘッダーセクションに配置します。
  2. 配置したテキストボックスのプロパティシートを開き、「その他」タブの「名前」プロパティを(例として)「txtSelectedID」に設定します。
  3. このテキストボックスは実際の運用時には非表示にすることも可能です。「書式」タブの「可視」プロパティを「いいえ」に設定してください。

  4. 「データ」タブの「既定値」プロパティに「0」を設定して、初期値を設定します。
    ヘッダーのテキストボックスに名前txtSelectedIDと既定値0を設定する画面
    テキストボックスの名前と既定値を設定します。
  5. 必要に応じて、ラベルを削除するか、「選択中のID」などの分かりやすい名前に変更します。
    テキストボックスのラベルを編集または削除する画面
    ラベルを編集または削除します。

詳細セクションにテキストボックスを配置する

各レコードのIDを表示するためのテキストボックスを詳細セクションに配置し、コントロールソースを設定します。

  1. 「デザイン」タブから「テキストボックス」を選択し、詳細セクションに配置します。(ラベルは削除してください)
  2. 配置したテキストボックスのプロパティシートを開き、「データ」タブの「コントロールソース」に「=[ID]」と設定します。
    =[ID]
  3. 「その他」タブの「名前」プロパティを「txtDetailID」に設定します。
    詳細セクションのテキストボックスにコントロールソースと名前txtDetailIDを設定する画面
    コントロールソースと名前を設定します。
  4. 「書式」タブで、テキストボックスの位置とサイズを調整し、「配置」タブで「最背面へ移動」をクリックします。
    テキストボックスの位置とサイズを調整し最背面へ移動する画面
    適切な位置に配置します。
  5. 実際の運用では、このテキストボックスの「背景色」や「境界線」を透明に設定すると、よりデザイン性が高まります。また、フォントサイズや色も必要に応じて調整してください。詳細セクション全体の背景色を変更したい場合は、テキストボックスで詳細セクションを全て囲うように設置し、最背面へ移動させてください。

    テキストボックスの見やすさをさらに高めたい場合は、Microsoft Accessでテキストボックスにプレースホルダー(透かし文字)を表示する方法もあわせてご覧ください。入力前の項目に説明文を薄く表示できます。

条件付き書式で選択中レコードの背景色を変更する

詳細セクションに設置したテキストボックスに条件付き書式を設定し、選択されたレコードの背景色を変更する仕組みを作ります。

  1. 先ほど設置したテキストボックス(txtDetailID)を選択します。
  2. 「書式」タブから「条件付き書式」をクリックします。
  3. 「新しいルール」をクリックし、「現在のレコード値を確認するか、式を利用する」を選択します。
    条件付き書式ルールの管理で新しいルールを作成する画面
    新しい条件付き書式ルールを作成します。
  4. 「次のセルのみ書式設定」のプルダウンメニューで「式」を選択し、ボックスに「[txtDetailID]=[txtSelectedID]」と入力します。
    条件付き書式に式[txtDetailID]=[txtSelectedID]を入力する画面
    条件式を入力します。
    [txtDetailID]=[txtSelectedID]
  5. 式の中のテキストボックス名は、実際に配置したコントロールの名前に合わせて変更してください。

  6. 「書式」ボタンをクリックし、「塗りつぶし」タブで背景色を選択します。薄い青やグレー、黄色など、視認しやすい色を選びます。
    条件付き書式でハイライト用の背景色を選択する画面
    ハイライト用の背景色を選択します。
  7. 「OK」をクリックして条件付き書式を保存し、ダイアログを閉じます。
    設定した条件付き書式ルールを保存する画面
    設定を保存します。

クリックイベントのVBAコードを実装する

レコードをクリックしたときに、ヘッダーのテキストボックスの値を更新するVBAコードを実装します。

  1. 詳細セクションのいずれかのコントロールを選択し、プロパティシートを開きます。
  2. 「イベント」タブの「クリック時」プロパティの横にある「…」ボタンをクリックします。
  3. 複数のコントロールに同じイベントを設定する場合は、それぞれに同じイベントを割り当ててください。また、詳細セクション全体を覆うように最前面に透明のボタンを配置してイベントを割り当てることで、詳細セクションのどの箇所をクリックしても統一的にハイライト表示させることができます。

  4. 「コードビルダー」を選択し、「OK」をクリックしてVBEを開きます。
    イベントの選択画面でコードビルダーを選ぶ画面
    コードビルダーを選択します。
  5. 以下のVBAコードを入力します。
    VBEでクリックイベントのコードを入力した画面
    クリックイベントのコードを入力します。
    Private Sub コントロール名_Click()
        ' クリックされた行のIDを、ヘッダーの箱に書き込む
        Me.txtSelectedID = Me.txtDetailID
        ' 画面を描き直して、条件付き書式を反映させる
        Me.Repaint
    End Sub

Me.Repaint は画面の描き直しだけを行う命令です。Me.Refresh でも動作しますが、こちらはデータの再読み込みまで行うため、レコード数が多いと動作が重くなります。今回のように表示だけを更新したい場面では Me.Repaint が適しています。

動作確認と最終調整を行う

設定が完了したら、フォームビューで動作を確認し、必要に応じて調整を行います。

  1. フォームを保存し、フォームビューに切り替えます。
  2. 任意のレコードをクリックして、背景色が変更されることを確認します。
  3. 背景色が変わらない場合は、条件付き書式の式が正しく入力されているか、テキストボックスの名前が一致しているかを確認してください。

  4. 別のレコードをクリックして、ハイライトが移動することを確認します。
    別のレコードをクリックしてハイライトが移動した画面
    ハイライトが正しく移動することを確認します。
  5. 必要に応じて、境界線や条件付き書式の適用範囲を調整します。(境界線を「なし」にするとよりスタイリッシュになります)
    境界線を調整して仕上げた帳票フォームの最終表示
    最終的な表示を確認します。

応用:複数の条件でハイライトを使い分ける

基本的なハイライト機能に加えて、レコードの状態に応じて異なる色でハイライトすることも可能です。例えば、選択中のレコードは青、編集中のレコードは黄色、エラーがあるレコードは赤といった具合に使い分けることができます。

複数の条件を設定する場合は、条件付き書式ダイアログで「新しいルール」を追加し、それぞれに異なる条件式と書式を設定します。条件の優先順位は、リスト内の順序で決まるため、適切に並べ替えることが重要です。

また、ハイライトの方法は背景色だけではありません。条件付き書式の「書式」ボタンから、文字色や太字も指定できます。背景色を変えると印刷時にインクを消費するため、印刷を前提とした帳票では文字色や太字でのハイライトが向いています。用途に応じて使い分けてください。

こんなときは:よくあるつまずきポイントと対処法

設定どおりに進めても色が変わらない場合、原因のほとんどは「名前の不一致」か「クリックイベントが拾えていない」のどちらかです。症状ごとの対処法をまとめます。

  • クリックしても背景色がまったく変わらない
    原因:条件付き書式の式に書いたコントロール名と、実際に配置したテキストボックスの名前が一致していません。
    → プロパティシートの「その他」タブで両方の「名前」を確認し、式 [txtDetailID]=[txtSelectedID] の綴りと突き合わせてください。名前を後から変更した場合は、式の側も直す必要があります。
  • 行の一部をクリックしたときだけ色が変わる
    原因:クリックイベントを設定したコントロールの上でしか、イベントが発生していません。
    → 詳細セクション全体を覆う透明のボタンを最前面に配置し、そのボタンにクリックイベントを割り当てます。これでどこをクリックしても反応するようになります。
  • クリックすると全部の行の色が変わってしまう
    原因:詳細セクションのテキストボックスに =[ID] のようなコントロールソースが設定されておらず、すべての行が同じ値になっています。
    → 詳細セクション側のテキストボックスに、レコードごとに異なる値(主キーなど)が入るようコントロールソースを設定してください。
  • クリックしても何も起こらず、エラーも出ない
    原因:Accessのセキュリティ設定でVBAが無効化されている可能性があります。ファイルを開いた際に画面上部へ黄色いメッセージバーが表示されていたら、この状態です。
    → メッセージバーの[コンテンツの有効化]をクリックします。毎回表示されるのを避けたい場合は、[ファイル]>[オプション]>[トラスト センター]>[トラスト センターの設定]>[信頼できる場所]で、データベースの保存先フォルダーを登録してください。
  • データシートビューでは色が変わらない
    原因:この方法は帳票フォーム(連続フォーム)を前提としています。データシートビューでは詳細セクションのレイアウトが使われないため、同じ仕組みは機能しません。
    → フォームのプロパティで「既定のビュー」を「帳票フォーム」に設定してください。

パフォーマンスを考慮した実装のポイント

大量のレコードを扱う場合のパフォーマンス最適化のポイントをご紹介します。

  • ❶ 条件式はシンプルに保ち、複雑な計算は避ける。(複雑な条件式はパフォーマンスに影響を与える可能性があります)
  • ❷ Me.Refreshの代わりにMe.Repaintを使用してパフォーマンスを向上(画面表示のみを更新。詳細は下表を参照)
  • ❸ 条件付き書式は必要最小限のコントロールにのみ適用。(適用範囲を絞ることでパフォーマンスを向上させることができます)
メソッド 更新範囲 パフォーマンス
Me.Refresh データとフォーム全体 低速
Me.Repaint 画面表示のみ(レコードの再読み込みはしません) 高速
Me.Recalc 計算式のみ 中速

実際に設定してみると、この仕組みの効果が最も大きいのは「1画面に20行以上を表示する一覧」だと感じます。行数が少ないうちは気になりませんが、スクロールが必要な一覧では選択位置を見失いやすいためです。フォーム全体の使いやすさをさらに高めたい場合は、Accessでナビゲーションメニュー付きフォームを作る方法や、Microsoft Accessでフォームデザインをスタイリッシュにカスタマイズする方法もあわせてご覧ください。

関連サイト(外部)

条件付き書式を使用してデータを強調表示する

確認環境 Windows 11 / Microsoft 365版 Access(Access 2019・2021でも同様の手順で操作できます)

最終更新 2026年7月25日