ACCESS 条件付き書式で行ごとにフォームの色を変える方法

条件付き書式で行ごとにフォームの色を変える方法

ACCESSはExcelに比べると行ごとに色を変えて表現するシーンは少ないかもしれません。
しかし、見やすさの観点で色を一定の条件に従って変えたいという場合には、条件付き書式を使用すると便利です。

今回は、ACCESSのフォームで条件付き書式を使って、行ごとに色を変える方法をご説明します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

行の背景色を個別に変えるには条件付き書式を利用する

ACCESSでは詳細行の背景色は、プロパティシートの背景色と代替の背景色で設定します。
フォームをデザインビューで開き、詳細行を選択した状態のプロパティシートにこの設定が表示されます。

この例では背景色、代替の背景色ともに背景1に設定されているので、同じ色が表示されます。
交互に色を変えたい場合は代替の背景色を別に色に変えると下記のように表示することが可能です。

行ごとに交互に色が変わっていますね。

しかし、この設定ではレコードの値に応じて柔軟に色を変えることはできません。
その場合は条件付き書式を利用する必要があります。

条件付き書式はフォームのデザインビューで「書式」タブから利用することができます。

ただし、適用できる対象はテキストボックスなどのコントロールのみとなりますので、フォームの詳細行そのものに適用することができません。
そのため、行全体を覆うテキストボックスを作成し、それに対して条件付き書式を設定する、という形になります。

レコードの値に応じて色を変える機能

では実際に条件付き書式を使って行単位に色を変えてみましょう。
まずは、レコードの値に応じて色を変える機能をご紹介します。

先に完成形を示します。
今回は請求額が30,000円以上50,000円未満なら青、50,000円以上なら赤になるように設定しました。

正常に業の色分けがされていますね。

フォームの設定

では作成していきましょう。

まず、この機能を作成するためのフォーム側の設定からです。
フォームのデザインビューで設定していきます。

行の色を変える際に、行にあるすべてのコントロール(請求ID、請求日、顧客名など)の背景色を変えていくのは面倒ですよね。
そのため、各コントロールの背景色は透明にし、その背後に色を付けるためだけのテキストボックスコントロール「行背景」を作成します。

実際に使用するコントロールの背景は上記の通り、透明にします。

色を変更するためだけに使用するテキストボックスコントロールを作成します。
非連結のコントロールで問題ありません。
今回は「行背景」と命名しました。

このテキストボックス コントロールは行全体を覆えるように横幅を設定します。

そして、その テキストボックス コントロールを最背面に配置します。
色を付けた際に最背面にしていないと他のコントロールが見えなくなってしまうためです。

条件付き書式設定

それでは次に条件付き書式を設定しましょう。

作成した行背景コントロールを選択した状態で、上段のメニューから「書式」→「条件付き書式」を選択します。

条件付き書式ルールの管理画面が開きますので、新しいルールの作成、を選択します。

条件を設定する画面になります。

ルールの種類は「現在のレコードの値を確認するか、式を利用する」を選択します。
ルールの内容は、「式」を選択して下記のように記述します。

そして、それぞれに背景色を設定すれば出来上がりです。

条件式の請求額は[]で囲う必要がありますので注意してください。
これで、レコードの値に応じて色を変える機能が完成しました。

選択したレコードのみ色を変える機能

次に、選択したレコードのみ色を変える機能を作ってみましょう。
完成形をお見せします。

今回は、検索フォームにおいて選択したレコードのみ青色に色を変える機能を作成しました。

選択している請求ID:5のみ、行の色が変わっているのがお分かりいただけると思います。
ここで別のレコードを選択すると、

このように色の付くレコードが変わります。

処理概要

こちらの機能をどのように実現しているか、概要を先にお伝えします。

フォームでレコードを選択するたびに、選択されたレコードの主キー(今回は請求ID)の値をフォームのあるコントロールに格納します。
そのコントロールの値と、レコードの主キーの値が合致していれば、条件付き書式で背景の色を変える、という指定をしています。

やっていること自体は比較的単純ですね。

フォームの設定

フォーム上では先ほどと同様に行背景テキストボックスを詳細行に作成します。

そしてもう一つ、現在選択されているレコードを特定するための値を格納するテキストボックスコントロールをフォームヘッダーに作成しましょう。

こちらも非連結です。
今回は「選択中ID」と命名しました。
こちらは画面上で見える必要が無いので、プロパティシートで可視:いいえに設定しておきます。

これでフォームに必要なコントロールは作成できました。

VBAコード

次に、VBAのコードを作成しましょう。
フォームのイベントプロシージャを作成します。

今回は、フォームのレコード移動時イベントを作成します。

そして、イベントプロシージャには下記のように設定します。

レコードが移動した時、つまりフォームの行を選択した際にその行の請求IDを、今回作成した選択中IDに格納するというコードです。
必要なコードはこれだけです。

条件付き書式設定

それでは最後に条件付き書式を設定しましょう。
再度フォーム側で操作します。

作成した行背景コントロールを選択した状態で、上段のメニューから「書式」→「条件付き書式」を選択します。

条件付き書式ルールの管理画面が開きますので、新しいルールの作成、を選択します。

条件を設定する画面になります。

ルールの種類は「現在のレコードの値を確認するか、式を利用する」を選択します。
ルールの内容は、「式」を選択して下記のように記述します。

そして、背景色を設定すれば出来上がりです。

条件式の [請求ID] = [選択中ID] とは、そのレコードの請求IDが選択中IDと合致したら書式を変える、という設定になっています。
少しややこしいですが、以下の処理になります。

フォーム上でレコードを選択すると、設定したイベントプロシージャにより、フォームの選択中IDに、請求IDが格納されます。
条件付き書式で選択中IDを参照すると、選択しているレコードの請求IDが格納されているので条件合致し、書式が適用される、というわけです。

これで、選択したレコードのみ色を変える機能も完成しました。

以上、条件付き書式で行ごとにフォームの色を変える方法についてご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。