添加新数据时Excel字段自动更新

时间:2011-05-03 18:52:29

标签: excel excel-vba vba

我有一个Excel文档,它从一些字段开始,这些字段来自对它下面的行进行的计算。为了进行计算,我目前有一个具有大约4个函数的模块,这些函数循环遍历行20到N(第一个空白单元格)。这些函数直接从工作表顶部的单元格中调用。问题是,只要有人从下面的行添加/删除数据,顶部的计算就不会更新。如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

如果您的函数是从工作表单元调用的Excel VBA用户定义函数,那么如果UDF引用不在UDF输入参数中的单元格,则会得到此不重新计算的行为。

如果是这种情况,一个好的解决方案是定义一些在添加/删除数据时扩展/收缩的动态命名范围,并将它们用作函数的输入。

另一种解决方案是将Application.Volatile添加到您的UDF中,但这会产生不良副作用,即在每次计算时都会重新计算UDF,这可能会非常缓慢。

答案 1 :(得分:0)

如果我正确理解您的问题,您可以使用Worksheet_Change事件来完成此类任务。

答案 2 :(得分:0)

在工作表模块中,添加Worksheet_Change事件:

Private Sub Worksheet_Change(ByVal rngChanged As Range)

    ' Call your subs and functions here

    MsgBox "You just changed something!"

End Sub

请注意,Worksheet_Change sub 必须只有一个Range类型的参数。 Excel将使其成为工作表用户更改范围的参考。如果要观察其行为,请尝试将此行放在sub:

rngChanged.Interior.ColorIndex = 4

阅读更多内容,例如here