- ベストアンサー
Accessのフォームでサブフォームに条件付き書式を設定する方法
- Accessのフォームでサブフォームに条件付き書式を設定する方法について教えてください。
- 私はフォームに乗っているサブフォームに対して、レコードが移動したら条件付き書式をつけたいです。しかし、設定した条件付き書式が反映されません。
- また、Access 2010ではフォームビューで設定した条件付き書式を確認することができません。どこが間違っているのか教えてください。
- みんなの回答 (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
お礼
ありがとうございました。