2016-04-29 17 views
0

1つのコンボボックスがあるテストフォームがあります。ボックスに選択したオプションに基づいて条件付き書式を設定します。コンボボックスにはタグ「条件付き」があります。Access 2013で条件付き書式を削除できません

条件付き書式を変更するには、フォーム上で呼び出されたサブフォームが開いている必要があります。将来、これは「条件付き」タグを持つ多くのコンボボックスに適用されます。

Private Sub ApplyCondFormatting() 
    Dim objFrc As FormatCondition 
    Dim ctl As Control 

    For Each ctl In Me.Controls 
     If ctl.Tag = "Conditional" Then 
      With ctl 
       'Remove format conditions 
       .FormatConditions.Delete 
       MsgBox ("Test") 

       'Apply new format conditions 
       Set objFrc = .FormatConditions.Add(acExpression, acEqual, "[Value] = Correct") 
       Set objFrc = .FormatConditions.Add(acFieldValue, acEqual, "[Value] = Incorrect") 

       'Specify the formating conditions 
       .FormatConditions(0).BackColor = RGB(0, 255, 0) 
       .FormatConditions(0).Enabled = True 
       .FormatConditions(1).BackColor = RGB(255, 0, 0) 
       .FormatConditions(1).Enabled = True 
      End With 
     End If 
    Next ctl 
    Set objFrc = Nothing 
End Sub 

のMsgBoxが表示されますので、マクロが正常に動作しているが、それは古いものを削除したり、新しい書式を追加しません。私は何が欠けていますか?

答えて

1

これは機能するはずですが、現在開いているフォームに「一時的に」のみ適用されます。あなたはそれを恒久的なものにしたい場合は

、あなたは

DoCmd.OpenForm strMyForm, acDesign 

予めデザインビューでフォームを開き、開口部なしでこれを行う方法はあり

DoCmd.Save acForm, strMyForm 
+0

その後、それを保存する必要がありますデザインビュー?ユーザーがボタンを押すとコードが実行されます。 – jjjjjjjjjjj

+0

@jjjjjjjjjjj:状況をさらに説明する必要があるかもしれません(質問を編集してください)。サブがすべてのForm_Openで実行されている場合は、変更が永続的でないかどうかは関係ありません。あるいは、あなたの '.FormatConditions.Delete'行は、現在のフォームインスタンスでさえ、まったく動作しませんか? – Andre

+0

後者です。ラインはまったく動作しません。 – jjjjjjjjjjj

関連する問題