【问题标题】:How to count all cells with any background coloring using VBA?如何使用 VBA 计算具有任何背景颜色的所有单元格?
【发布时间】:2016-07-18 18:06:11
【问题描述】:

我试图简单地计算列中具有背景颜色的所有单元格。任何颜色都无所谓。我使用了一个使用此代码的模块:

Function CountCcolor(range_data As Range) As Long
    Dim datax As Range
    For Each datax In range_data
        If datax.Interior.ColorIndex <> xlNone Then
            CountCcolor = CountCcolor + 1
        End If
    Next datax
End Function

当我第一次应用公式时,这很有效。当我更改表格时,它不再有反应。每次用户编辑单元格时,如何执行此功能?

【问题讨论】:

  • 看看herehere
  • 嗨。谢谢我看到了,但我无法让它工作。我只有一个包含那段代码的模块。在工作表中,我这样称呼它 =CountCcolor(B5:B18) 效果很好。但是,如果我填充新的单元格,它不会反应。对不起,我是 VBA 的新手..

标签: vba excel


【解决方案1】:

您可以在相关的 Worksheet_Change 事件中使用以下代码刷新整个工作簿:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

End Sub

【讨论】:

  • 您好,感谢您的回答。当我填充一个单元格时,不会调用这个事件。只有当我移除填充物时。
【解决方案2】:

没有通过填充单元格触发的事件。因此,我建议使用以下工作表宏

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Sh.Calculate
End Sub

除了你的宏。推理:填写范围后,您将(最终)选择该工作表上的其他单元格。此时,总和被重新计算。这并不理想,因为它没有在您选择范围时更新,并且可能需要大量计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多