• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクティブ(カレント)レコードに条件付き書式で)

Accessのフォームでサブフォームに条件付き書式を設定する方法

このQ&Aのポイント
  • Accessのフォームでサブフォームに条件付き書式を設定する方法について教えてください。
  • 私はフォームに乗っているサブフォームに対して、レコードが移動したら条件付き書式をつけたいです。しかし、設定した条件付き書式が反映されません。
  • また、Access 2010ではフォームビューで設定した条件付き書式を確認することができません。どこが間違っているのか教えてください。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

まず、間違ってそうな箇所は "[名前] = """ & Me.Controls("名前") & "" ↓ "[名前] = """ & Me.Controls("名前") & """" 後、条件付き書式を設定できないコントロールは存在しないのでしょうか? 以下、総括的に カレント行全体の背景色を変えてハイライト表示させるには? http://www.tsware.jp/tips/tips_392.htm この内容に合わせるために、苦労されていたのでしょうか 配列にコントロールを求めて・・・されていますが、一気にやられてみてはどうでしょう 例えば、 Private Sub Form_Current()   Dim ctl As Control   For Each ctl In Me.Section(acDetail).Controls     With ctl       Select Case .ControlType         Case acTextBox, acComboBox           With .FormatConditions             .Delete             With .Add(acExpression, , "[名前] = """ & Me.名前 & """")               .BackColor = 255             End With           End With       End Select     End With   Next End Sub 背景色を変えるのは、「詳細」に配置したテキストボックス/コンボボックスだと思うので、 Me.Controls ではなく「詳細」に絞った Me.Section(acDetail).Controls を処理範囲とします。 で、コントロールが、テキストボックス/コンボボックスなら条件付き書式を・・・・ また、以下の様な方法もあります。 フォーム読み込み時に、基本となる条件付き書式を設定しておいて、 (設定したコントロールの目印として Tag に文字列を設定) レコード移動時では、条件を書き換える・・・・ ( Tag に文字列が設定されているコントロールを探し出して・・・) Private Const SetFMTC As String = "SetFormatConditions" Private Sub Form_Load()   Dim ctl As Control   For Each ctl In Me.Section(acDetail).Controls     With ctl       Select Case .ControlType         Case acTextBox, acComboBox           With .FormatConditions             .Delete             With .Add(acExpression, , "[名前] = """"")               .BackColor = 255             End With           End With           .Tag = SetFMTC       End Select     End With   Next End Sub Private Sub Form_Current()   Dim ctl As Control   For Each ctl In Me.Section(acDetail).Controls     If (ctl.Tag = SetFMTC) Then       ctl.FormatConditions(0).Modify acExpression, , "[名前] = """ & Me.名前 & """"     End If   Next End Sub なお、一般的なのか・・・・良く使う方法は 不可視のテキストボックス「txt1」を設置して、 読み込み時にでも、条件付き書式 [名前] = [txt1] を設定しておき、 レコード移動時に、Me.txt1 = Me.名前 を代入 これらをする事で、条件付き書式部分を書き換えなくても実現できるものになります。 Private Sub Form_Load()   Dim ctl As Control   For Each ctl In Me.Section(acDetail).Controls     With ctl       Select Case .ControlType         Case acTextBox, acComboBox           With .FormatConditions             .Delete             With .Add(acExpression, , "[名前] = [txt1]")               .BackColor = 255             End With           End With       End Select     End With   Next End Sub Private Sub Form_Current()   Me.txt1 = Me.名前 End Sub 以下、まとめて書かれていますので参考になると思います カレント行の背景色の変更 その2 http://hatenachips.blog34.fc2.com/blog-entry-20.html カレント行の背景色の変更 http://hatenachips.blog34.fc2.com/blog-entry-18.html また、条件付き書式を使わない方法も紹介されてます。 カレント行の背景色の変更 その3 http://hatenachips.blog34.fc2.com/blog-entry-21.html

qaeqokvsvswrq
質問者

お礼

ありがとうございました。