Last Update : 2008/03/24

Q.帳票フォームで、条件によってコントロールの色を変えたいんですが、全部同じ色になってしまいます。
このコンテンツに関連したおすすめ書籍: プロ中のプロが教えるAccessスーパーテクニック―ACCESS2000/2002/2003対応

コメント: 信頼できる著者による信頼できる本。わかりやすくて使いやすいです。
金額がマイナスのものだけ目立たせたいと思って、レコード移動時のイベントでコントロールの背景色を変えるようにモジュール組んだんですけど、ぜんぶ最後のレコードと同じ色になってしまうんです。Accessって、コントロールのプロパティをレコードごとには持ってないんですか?

はい、帳票フォームでは、(レポートでも単票フォームでも実際そうですが)すべてのレコードでコントロールを共有してます。Excelみたいにレコードごと(Excelは行ですが)に持っている訳ではないのです。
Excelは行数に制限があり、(65535行だったかな?)プロパティも当然最大65535行分持てばいいんですが、Accessデータベースソフトです。レコード数に制限なんてつけたら使い物になりませんので、行毎にプロパティは持てません。

そうなると、一見、行毎に色を変えるという希望は叶えられそうにありませんが、実は方法がないわけではありません。

書式プロパティを利用する方法(数値型の場合)

ヘルプで[書式]と入力し検索すると、「書式、プロパティ」というコンテンツがみつかり、その中に「書式プロパティ−数値型および通貨型」というコンテンツがあります。
この下のほう、「カスタム書式」に注目してください。
色を変えたいコントロールのデータ型が数値の場合、4つのパターンで表示することができます。

  1. その数値が正のとき
  2. その数値が負のとき
  3. その数値がゼロのとき
  4. その数値がNullのとき

これ以外の条件はこの方法では判断できませんので注意してください。

実際の記述はヘルプを参照してください。


コントロールを重ねる方法(表示のみ)

実は、ある1つの項目に連結しているコントロールは、1つでなくても全然問題ありません。
ということは、違う書式・違う色で、同じ項目に連結したコントロールを複数持ってもいい、ということです。
たとえば。コードの上1桁が”1”で始まる場合、名称を赤で。
それ以外の場合フツウに黒で表示したいとすると、

  1. 「名称1」コントロールを作成し、コントロールソースに
    =IIF(left([コード],1)="1",[名称])
    と入力し、「前景色」プロパティを赤色(255)に設定します。
    背景スタイルは「透明」に設定します。

  2. 「名称2」コントロールを作成し、コントロールソースに
    =IIF(left([コード],1)<>"1",[名称])
    と入力し、「前景色」プロパティを(0)に設定します。
    背景スタイルは「透明」に設定します。

こうすると、[コード]の上1桁が”1”のときは、[名称1]コントロールに名称が表示され[名称2]は見えません。
逆に、[コード]の上1桁が”1”でないときは、[名称2]コントロールに名称が表示され[名称1]は見えません。
結果は、御自分の目で確かめてください。
ただし、このコントロールは、表示のみで修正・変更はできません。


どんな場合でも、自由自在にという訳にはいきませんが、このような方法もある、ということで・・・
なお、Access2000では、「条件式書式」がサポートされてるのでだいぶラクになりましたが、万能というわけにはいきませんね、やはり。


この件に関しましてご質問がございましたら、こちらまで。


この情報は、お客様の疑問・問題解決のお役に立ちましたか?
満足度を左から右へ高い順へご選択ください。


←役に立った 9 8 7 6 5 4 3 2 1 役に立たない→
この情報へのご意見、ご要望がございましたらこちらへご記入ください。
( 全角 500 文字以内 )








Top へもどる