• ベストアンサー

ACCESSで、フォームのレコードごとに背景色変更

OS:Windows XP Access Version: ACCESS 2000 ACCESSを利用して一日の時間外を計算するフォームを作成しています。 >   16 金 4:00 > 17 土 3:00 > 18 日 2:00 >  というような感じで時間を入力するのですが、曜日に特徴をつけて誤った入力をしないように、曜日が日曜日の時だけそのレコードの背景色を変更したいのです。よく、レポートで背景色を交互に変更するというやりかたをみてそれを行う方法はわかるのですが、それとおなじよなことをフォームでしたいのです。どうかお願いします!!ちなみにVBAはある程度わかりますのでVBAを利用した方法でもかまいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.1

帳票形式の場合ですが(多分データシートビューのフォームでも行けるとは思いますが)・・・ 例えばですが、次のようにしてやると、できます。 (1)フォームヘッダー(もしくは詳細セクション)に、「txtID」という名前の 非連結テキストボックスを配置。「可視」プロパティは「いいえ」。 これには、真のIDフィールド(例えば連番フィールドや主キーフィールド)の値を レコード移動時に転記します。(言わばダミーのテキストボックス) (2)フォームのレコード移動時のイベントプロシージャを下記の様に 記述します。 サブフォームでやりたいなら、サブフォームのレコード移動時イベントに 記述します。 Private Sub Form_Current() '真のIDフィールドの値を[txtId]へ代入。   Me!txtID = Me!真のIDフィールドの名前(例えば連番フィールドや主キーフィールドと連結したテキストボックスの名前) End Sub (3)詳細セクション上にある、色変えしたいすべてのテキストボックスを一括選択して、 [書式][条件付き書式]で、条件付の書式設定をします。 条件(1)で、まず ドロップダウンリストから 「 式 」を選び、 その右の条件内容を [txtID]=[フォームに配置した真のIDフィールドの名前(連結テキストボックス名)] とします。 そして、背景色を白や透明以外に設定します。 以上 ダミーの非連結テキストボックスは、詳細セクションに置いてもOKですが、 その場合、速度を多少でもアップさせたいならフォームヘッダーに 配置する方がいいのかもしれません。(あんましかわらないかもしれないが) ※※ なお、もし選択した行だけを色変えしたい条件も同時に設定する場合は カレントレコード色変えの条件を後に(条件(2)に)設定します。 【例】 条件(1)・・・「 式 」、[選択状態]=[選択フラグ] ←選択行だけを色変えする条件 条件(2)・・・「 式 」、[txtID]=[連番] ただし、あまり色がつく行が増えると、フォームの 動作が遅くなるかもしれません。 お望みの機能でなかったらごめんなさい。

その他の回答 (1)

  • Kasha
  • ベストアンサー率11% (1/9)
回答No.2

条件付書式ですぐできますよ。 > 18 日 2:00 これが、 txt_日付 txt_曜日 txt_時間 というかたちで並んでいる、と仮定して。。。 デザインの状態で txt_日付 txt_曜日 txt_時間 を選択し、 [書式]→[条件付き書式] 条件は「式」を選択し、 式を入力するところに「trim(txt_曜日) = "日"」と入力し、 あとはそのすぐ下の「条件が真のときに使用する書式」のところで 好きな背景色を選択してみてください。 「日曜日の場合は背景色が変わる」ということになるかと思います。 ちなみに「条件2」とかで他のの場合の条件を指定すれば、 土曜日とか祝日の場合にも対応できると思います。

関連するQ&A