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

最后发布: 2011-05-03 18:52:29


问题

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

excel excel-vba vba
回答

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

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

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


回答

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


回答

Worksheet_Change表模块中,添加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子项必须只有一个Range类型的参数。 Excel将使其成为工作表用户更改范围的参考。 如果要观察其行为,请尝试将此行放在子行中:

rngChanged.Interior.ColorIndex = 4

阅读更多,例如这里