• 締切済み

Accessサブフォームの条件による背景色変更

色々調べてみましたが、探し方が悪いのか見つからず何かヒントでも頂けたらと思います。 はじめて投稿します。よろしくお願いします。 Access2007です。 Accessのサブフォーム(データシート)の背景色をデータの種類によって色分けしたいと 思っております。条件付き書式では3つまでしか設定できないのでVBAで対応しないといけない のかなと思っております。条件付き書式に複数設定する方法があれば楽ですが。 条件としては、 入なら赤、外ならオレンジ、Sならグリーン、Pまたは苗字ならブルー、Oならイエロー というふうな感じです。で、例えば、Pという文字列がくれば無条件に 同じ行で続けて12列同じ色にしたいのです。 見た目で1列5分として12列で60分の枠をPは取ったという具合です。伝わりますか? これをVBAで記述しようと思えばどうなりますか? With Me.Sub.Form.Recordset Do Until .EOF If Me.Sub.Controls(2).Value="入" then Me.Sub.Controls(2).BackColor=vbRed 隣りの行にいくにはどう書きますか? .MoveNext Loop 上のように試してみましたが、エラー出ずとも変化なしでした。 伝え方が下手くそでしたらすいません。どなたかご教示願います。

みんなの回答

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.1

回答が付かないようなので、大雑把なアドバイスをします。 サブフォームはそれだけで完結した表示対象なので、個々の枠内の色を変えることはできないと思います。 どうしても、個別にしたいのならば、サブフォームの内容を再現するフォームに連動したクエリを作成し、そのクエリを表示する独自の表表示のデザインと操作関数を作成して行うことになるでしょう。 その独自の表を上書きできるようにできるのかは、作ってみなけれ分からないことでしょう。 もう一つ別のやり方は、表示はそのサブフォームのままで、重ねるように複数の透明なテキストボックスを載せて、色づけしたい位置のテキストボックスの色付けと透明度の変更をするような方法が考えられます。

lienciel
質問者

お礼

seastar3様 ご回答ありがとうございます。 やっぱり無理ですかね。テキストボックスを重ねるのは考えたこともあるのですが、 表示内容が多いため面倒だと思いやめました。 今少しずつ色々な方法を試しながら進めております。たぶん進んでいると思います。 「サブフォームの内容を再現するフォームに連動したクエリを作成し・・・」のところは 参考にさせていただきたいと思います。 ありがとうございました。また何かありましたらよろしくお願いいたします。

関連するQ&A