- ベストアンサー
Access テキストボックスの文字色
チェックボックスにチェックが入っていない場合、テキストボックス内の文字色を赤に、チェックを入れたら黒に、またチェックを外したら赤に、という風にしたいです。 条件付書式で設定した場合、条件を満たしたらすぐには反映されず、一旦別のレコードに移動して戻ってくると反映されています。 VBAのコードで Private Sub 処理_AfterUpdate() If チェックボックス = 0 Then '文字色変更処理 Else '文字色変更処理 End If End Sub のようにすれば出来るのではないかと思うのですが、 文字色変更のコードがわかりません。 どなたか教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Access2003でも試しました。 う~ん、条件付き書式でいけますね。。。 テキストボックスの条件付き書式で、 [式][[チェックボックス]=no][文字色赤] でできました。
その他の回答 (4)
- KenKen_SP
- ベストアンサー率62% (785/1258)
>なぜかチェックの付け外しだけでは書式変更されないのですが・・・ コントロールの条件付書式です。条件式に誤りがあるのでは? 例えば、 コントロール名が ・CHEKBOX1 ・TEXTBOX1 の2つのコントロールがフォームに配置されていたとして、CHECKBOX1の値でTEXTBOXの文字色を変更するには、条件付書式を次のようにデザインビューで設定します。 1. TEXTBOX1を選択 2. [書式]-[条件付書式]クリック 3. 条件1の設定 [式が] 式: [CHECKBOX1]=No 書式:赤字 4. [OK]クリック 3.の式: [CHECKBOX1]=No は [CHECKBOX1]=False でもOKだと思います。 コントロール名を[]でくくってみたら、どうでしょうか?
お礼
教えて頂いた通りにやってもダメだったので、 下記コードを書き加えました。 Private Sub チェックボックス_AfterUpdate() テキストボックス.requery End Sub ありがとうございました。
- crossgate
- ベストアンサー率65% (78/119)
ちなみにAccessはどのバージョンを使っていますか? Access2002ではレコードを条件付き書式を使えばレコードを移動しなくても書式が変更されますが・・・
補足
バージョンは2003です。 なぜかチェックの付け外しだけでは書式変更されないのですが・・・ うーん・・・
- crossgate
- ベストアンサー率65% (78/119)
ごめんなさい、逆でした(^ ^; Private Sub チェックボックス_AfterUpdate() lngRed = RGB(255, 0, 0) ' 赤 lngBlack = RGB(0, 0, 0) ' 黒 If チェックボックス.Value = 0 Then テキストボックス.ForeColor = lngRed Else テキストボックス.ForeColor = lngBlack End If End Sub
お礼
ありがとうございます。 そして大変な事に気付きました。 この方法だと全レコードが同じ色になってしまうんですね・・・ レコード毎の色の値は持っていないんでしょうか。
- crossgate
- ベストアンサー率65% (78/119)
Private Sub チェックボックス_AfterUpdate() lngRed = RGB(255, 0, 0) ' 赤 lngBlack = RGB(0, 0, 0) ' 黒 If チェックボックス.Value = 0 Then テキストボックス.ForeColor = lngBlack Else テキストボックス.ForeColor = lngRed End If End Sub ではどうでしょう?
お礼
教えて頂いた通りにやってもダメだったので、 下記コードを書き加えました。 Private Sub チェックボックス_AfterUpdate() テキストボックス.requery End Sub ありがとうございました。