2017-03-22 40 views
1

(Excel 2016)我有幾個使用現有條件格式的大型電子表格。在任何特定的工作表中,我有幾個表,每個表都有自己的一組條件格式。表格的大小不同,所以範圍有所不同。有很多(100年代)。同樣的規則適用於每一個集合,也就是說,我想要編輯的條件格式是一致的,具有適用於每個範圍/表格(例如紅/黃/綠/藍)的4種格式的相同「集合」。使用代碼編輯現有的條件格式

我想弄清楚如何編輯現有格式的顏色值。例如,將當前爲綠色的文本顏色更改爲淺綠色。現在我必須手動編輯數百個公式條目。

我見過很多關於通過VBA應用條件格式的例子,但是我沒有看到我怎樣才能遍歷這些表格並編輯現有格式,而不改變它們的順序或優先順序。

+1

AFAIK沒有VBA代碼來檢查單元是否應用條件格式。因此,您必須嘗試獲取並在同一時間使用'On Error Resume Next'來規避這個缺點。同樣,無法確定任何給定單元格當前有多少個條件格式。再一次,你必須**嘗試**來抓住他們的使用'在錯誤恢復下一步'。簡而言之:我同意@Jeeped,最好的辦法是刪除它們並重做它們,而不是試圖用可怕的編碼實踐編寫一些​​間接代碼來克服VBA在這方面的缺點。 – Ralph

+0

你的更改列表在哪裏?例如原來的顏色,新的顏色等 – Jeeped

+0

我在先前的評論中輪流發言。你不能改變CFR的'Formula1'參數,但你可以調整顏色而不破壞和重構它。見下文。 (@Ralph) – Jeeped

回答

1

如果您只想修改填充顏色,請循環瀏覽工作表上的所有.FormatConditions,然後使用Select ... Case修改顏色序號。

Option Explicit 

Sub wqwqty() 
    Dim cfr As Long 
    With Worksheets("Sheet1").Cells 
     For cfr = 1 To .FormatConditions.Count 
      With .FormatConditions(cfr).Interior 
       Debug.Print .Color 
       Select Case .Color 
        Case 255    'dark red 
         .Color = 192  'light red 
        Case 192    'dark red 
         .Color = 255  'light red 
        Case 5287936   'dark green 
         .Color = 5296274 'light green 
        Case 12611584   'dark blue 
         .Color = 15773696 'light blue 
        Case 49407    'orange 
         .Color = 65535  'yellow 
       End Select 
       Debug.Print .Color 
      End With 
     Next cfr 
    End With 
End Sub 
+0

謝謝你們。 Jeeped:代碼示例似乎是我想要做的。我只需要在所有實例中以編程方式調整顏色。從一個到另一個。這在某些情況下是文字顏色,所以內部變爲什麼? – shorton

+0

代碼(Sub wqwqty())僅更改顯示條件嗎?我的意思是:如果我有一個條件導致綠色文本和綠色內部,另一個條件是紅色文本。我設置並運行代碼,將綠色文本的格式條件更改爲白色文本。我有一個細胞,這是條件使文本變紅。在我運行代碼之後,該單元格的值發生了變化,使其符合綠色條件。該單元格將變爲所需的白色文本綠色填充還是綠色原始綠色填充。我希望我寫得夠清楚。 – shorton

+0

我希望我不會因爲每天/每週給予太多選票而被禁止訪問本網站。我聽說一個用戶在這個網站上推薦另一個用戶的聲望太多時會引發這種行爲。但是,再次..這不是我的錯,幾乎所有的答案都很好,值得投票。是嗎? – Ralph