我在VBA中为excel创建了一个函数,它根据不同的单元格计算某个范围内某种颜色的单元格数。这样可以首先运行该函数,但是当将该范围中的一个单元格的颜色更改为计数的颜色时,该值不会更新。我如何获得它,以便每当我改变颜色时功能会不断更新?工作簿校准设置为自动。
Function CountColor(rSumRange As Range)
Dim rCell As Range
Dim iCol As Integer
Dim vResult
iCol = Range("P1").Interior.ColorIndex
For Each rCell In rSumRange
If rCell.Interior.ColorIndex = iCol Then
vResult = vResult + 1
End If
Next rCell
CountColor = vResult
End Function
答案 0 :(得分:3)
更改颜色不会触发Worksheet_Change()
,也不会触发任何Application.Calculate
。
如果您的工作簿没有太多公式,您可以尝试使用庞大的解决方案:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Calculate
End Sub
答案 1 :(得分:1)
这将以某些性能为代价,但您可以在代码中添加“Application.Volatile”,以便在工作表发生更改时重新计算。
参考:http://msdn.microsoft.com/en-us/library/aa213653(v=office.11).aspx