2016-04-29 38 views
0

我有一個測試表單,只有一個組合框,其中我根據框中選擇的選項設置了一些條件格式。組合框的標籤爲「有條件」。無法刪除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