【问题标题】:Excel VBA Change Color Of Cell Based On ValueExcel VBA根据值更改单元格的颜色
【发布时间】:2013-10-19 01:13:34
【问题描述】:

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

由于我对 VBA 和 excel 的了解有限,我想出了这个

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

如果可能的话,我宁愿不使用条件格式,但如果需要,我愿意将其作为最后的手段。感谢您的所有帮助以及帮助我​​解决以前的问题,这个社区很棒。

【问题讨论】:

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

标签: excel vba colors


【解决方案1】:

我认为你只是使用条件格式我知道函数不能改变颜色或者你使用宏

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

很抱歉,我知道了

【讨论】:

    【解决方案2】:

    我执行下面的代码来突出显示列中相同的单元格。条件格式并没有让我级联“等于上面的单元格”的公式,也许我没有做对。无论如何,这很有效,并且很容易改变并添加到它。可以轻松更改此示例以适应您的问题。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2019-10-25
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多