Excel VBA基于值更改单元格颜色

Excel VBA基于值更改单元格颜色,excel,vba,colors,Excel,Vba,Colors,我需要一个函数的帮助,该函数可以根据单元格的值是否等于另一个单元格的值来更改单元格的颜色,当前单元格持有=计数(##:###),如果该值等于另一个单元格中的值,我需要将颜色从红色更改为绿色 凭借我对VBA和excel的有限知识,我想出了这个主意 Function ChangeColor(CellColor As Range) Application.Volatile True If CellColor = cell.Value Then ChangeColor = cell.Interior.C

我需要一个函数的帮助,该函数可以根据单元格的值是否等于另一个单元格的值来更改单元格的颜色,当前单元格持有=计数(##:###),如果该值等于另一个单元格中的值,我需要将颜色从红色更改为绿色

凭借我对VBA和excel的有限知识,我想出了这个主意

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

如果可能的话,我宁愿不使用条件格式,但如果需要的话,我愿意将其作为最后的手段。感谢您的帮助,也感谢您在前面的问题上对我的帮助。这个社区非常棒。

我认为您只使用条件格式,我知道函数不能更改颜色,或者您使用宏

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

很抱歉,我知道这是我做了下面的代码来突出显示列中相同的单元格。条件格式不允许我级联“等于上面的单元格”的公式,也许我做得不对。无论如何,这是有效的,很容易改变和增加。此示例可以很容易地更改以适合您的问题

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

从工作表调用的函数无法对工作表进行任何更改,因此您必须使用条件格式或处理工作表\u calculate事件。如果您确实在工作表\u calculate或其他方式中做到了这一点,则每次运行该函数时都会清除撤消历史记录。由于您将此标记为Volatile,因此您将在没有撤消堆栈的情况下工作。它只是一个单元格吗?或在特定位置有多个单元格(如“总计”列)?因为您可以使用“工作表更改”事件来监视对这些特定单元格的更改。不过,这听起来确实像是一项条件格式的工作。