如何根据单元格颜色获取 UDF 以在 Excel 中自动更新
Posted
技术标签:
【中文标题】如何根据单元格颜色获取 UDF 以在 Excel 中自动更新【英文标题】:How do I get a UDF based on cell color to auto update in excel 【发布时间】:2017-03-14 01:37:55 【问题描述】:我找到了一个根据颜色计算单元格值的 UDF。我第一次使用它时效果很好。但是,现在当我更改单元格的颜色(颜色指示单元格是否已计划或执行)时,在现有工作簿中它不会自动更新。见以下代码:
Function SumByColor(CellColor As Range, rRange As Range)
Application.Volatile True
Dim cSum As Long
Dim ColIndex As Integer
Dim cl As Variant
ColIndex = CellColor.Interior.ColorIndex
For Each cl In rRange
If cl.Interior.ColorIndex = ColIndex Then
cSum = WorksheetFunction.Sum(cl, cSum)
End If
Next cl
SumByColor = cSum
End Function
我试过Application.Volitale
,但没有运气。 F9 用于更新包含该函数的单元格。不过,如果我很忙,或者离开我的 WS,最好自动更新。有什么想法吗?
【问题讨论】:
是Application.Volitale
是Application.Volatile
的问题中的拼写错误,还是您的原始代码中的拼写错误,这是它不起作用的部分原因。 (据我所知,更改单元格的颜色不会强制 Excel 重新计算,所以我怀疑 Volatile
是否会有所帮助。)
更改单元格颜色不会触发计算或任何其他事件。按照我的看法,您可以尝试使用Worksheet_SelectionChange
,或创建一个重复自身的宏(例如每秒)并触发计算。
什么是更新范围 CellColor?您只想在该范围更改颜色时更新 SumByClor。你说“或者离开我的WS”。当您离开办公桌时,您正在运行什么使该单元格改变颜色?不管它是什么,你能让它重新计算工作表吗?
【参考方案1】:
您可以创建一个工作表事件过程,当工作表上识别出更改时将运行该过程:
Private Sub Worksheet_Change(ByVal Target as Range)
'Call function with appropriate variables
End Sub
【讨论】:
以上是关于如何根据单元格颜色获取 UDF 以在 Excel 中自动更新的主要内容,如果未能解决你的问题,请参考以下文章
如何根据单元格的值使单元格颜色RGB值发生变化? (在Excel中)