選択中のレコードの行背景色を変える方法
Accessのレコードの一覧を表示するようなフォームで、選択中のレコードの行背景色を分かりやすくするために変更したい場合があります。
簡単にできそうな内容ですが、Accessの場合は意外と苦労するので、メモとして残しておきます。
目次
- 完成イメージ
- 画面の構成
- 詳細セクション内の項目
- 選択中レコードのIDを保持する非連結のテキストボックス
- 条件付き書式ルールの追加
- VBAコードの追加
- 実行結果
完成イメージ
画面の構成
詳細セクション内の項目
詳細セクション(繰り返し部)のコントロールは、大きく分けて以下のパーツに分かれます。
- 選択したレコードの背景色を設定する非連結のテキストボックス
- 背景色用テキストボックスにカーソルを合わせないためのコマンドボタン(テキストボックスの上に被せる)
- 上記以外の一覧に表示したいコントロール
選択したレコードの背景色を設定するテキストボックスは以下の通り。
※ 分かりやすいように各パーツを本来の位置からずらしています。
背景色用テキストボックス(名前:txt背景色)のプロパティに、境界線スタイル「透明」、使用可能「いいえ」、編集ロック「はい」、タブストップ「いいえ」を設定します。
次に背景色を設定したテキストボックスだけだと、テキストボックスのエリアをクリックした際に、上に置いたコントロールよりも前に表示されてしまうので、そうならないように透明にしたコマンドボタンを配置します。
プロパティの値は、透明「はい」を設定するだけで、後は背景色用のテキストボックスがすべて隠れるように広げます。
最後に一覧に表示したい項目のコントロール(テキストボックスなど)を配置します。
表示位置は後ろから「①背景色用テキストボックス」「②背景色用テキストボックスを覆うコマンドボタン」「③項目表示用のコントロール」の順番になります。
②、①の順に「最背面に移動」を指定すると、上記の順番通りになるかと思います。
選択中レコードのIDを保持する非連結のテキストボックス
条件付き書式ルールの追加
VBAコードの追加
最後にフォームのイベント「レコード移動時」にVBAを実行するようにします。
コードは以下の通り。
Private Sub Form_Current()
[txtカレント商品ID] = [txtID]
End Sub
上記のコードを追加することで、選択中のレコードが切り替わる度に「txtカレント商品ID」に選択中の商品IDが保存されるようになります。