2013-10-11 177 views
0

我需要一些幫助,可以根據單元格的值是否等於另一個單元格的值來更改單元格的顏色,當前單元格包含= COUNT (##:##),如果該值等於另一個單元格中的值,我需要將顏色從紅色更改爲綠色。Excel VBA根據值更改單元格的顏色

用我有限的VBA的知識和excel我想出了這個

Function ChangeColor(CellColor As Range) 
Application.Volatile True 
If CellColor = cell.Value Then ChangeColor = cell.Interior.ColorIndex = 14 
End Function 

如果可能的話,我寧願不使用條件格式,但我願意把它作爲最後的手段,如果需要的。感謝您的幫助,並幫助我回答以前的問題,這個社區很棒。

+3

從工作表中調用的函數不能對工作表進行任何更改,因此您不得不使用條件格式或處理worksheet_calculate事件。 –

+1

如果您確實設法以worksheet_calculate或其他方式執行此操作,則每次運行時都會清除撤消歷史記錄。既然你正在標記這個Volatile,那麼你將會在沒有撤銷堆棧的情況下工作。 –

+0

它只是一個單元嗎?或在特定地點的多個單元格(如「總計」列)?因爲您可以使用worksheet_change事件來監視這些特定單元格的更改。它聽起來像條件​​格式化的工作。 – NickSlash

回答

0

我覺得你只是使用條件格式我知道的功能不能改變顏色,或者你使用宏

If CellColor = Selection.Value Then CellColor.Interior.ColorIndex = 14 

我很抱歉,這就是我知道

1

我做了下面的代碼突出顯示相同列中的單元格。條件格式不允許我將「等於上面的單元格」的公式級聯起來,也許我只是沒有做到這一點。無論如何,這工作,很容易改變,並添加到它。這個例子可以很容易地改變,以適應你的問題。

Sub checkduplicates() 
Dim Loop1 As Integer 
Dim Loop1StartRow As Integer 
Dim Loop1EndRow As Integer 
Dim Loop1Count As Integer 
Dim Current As Integer 
Dim NextOne As Integer 

Loop1StartRow = 4 '4 HYIDAS 
Loop1EndRow = 330 '330 HYIDAS 
Loop1Count = 0 

For Loop1 = Loop1StartRow To Loop1EndRow 
    Worksheets("HYIDAS").Activate 
    Loop1Count = Loop1Count + 1 
    Current = Range("H" & Loop1) 
    NextOne = Range("H" & Loop1 + 1) 
    If Current = NextOne Then 
     Range("H" & Loop1).Interior.Color = 220 
     Range("H" & Loop1 + 1).Interior.Color = 220 
    End If 
Next Loop1 
End Sub 
相關問題