如何计算使用VBA的任何背景颜色的所有单元格?
我正在尝试简单地计算具有背景色的列中的所有单元格。 任何颜色都不重要。 我用这个代码使用了一个模块:
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
这在我第一次使用这个公式的时候效果很好。 它不再反应,当我改变填写表格。 每当用户编辑一个单元格时,我怎样才能优化这个function?
您可以使用下面的代码在相关的Worksheet_Change事件中刷新整个工作簿:
Private Sub Worksheet_Change(ByVal Target As Range) Application.Calculation = xlCalculationManual Application.Calculation = xlCalculationAutomatic End Sub
没有事件是由填充单元触发的。 因此,我build议下面的工作表macros
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Sh.Calculate End Sub
除了你的macros。 推理:在填充范围之后,您将(最终)select该表单上的其他单元格。 此时,重新计算总和。 这是不理想的,因为它没有更新, 而你select的范围,它可能是计算密集型的。