如何根据单元格颜色获取 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.VolitaleApplication.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 中自动更新的主要内容,如果未能解决你的问题,请参考以下文章

Java从Apache poi获取excel单元格背景颜色

自动计算与单元格属性相关的 Excel VBA UDF

如何根据单元格的值使单元格颜色RGB值发生变化? (在Excel中)

excel如何根据条件自动变换行列颜色?

如何使用 Excel 的数组公式为 UDF 正确读取每个单元格?

如何将不连续的单元格传递给 Excel UDF