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

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

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

如果是这种情况,一个好的解决scheme是定义一些dynamic命名范围,扩展/收缩作为数据添加/删除,并将其用作input到函数。

另一个解决scheme是将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子项必须有且仅有一个types为Range参数。 Excel将使其成为表单用户更改范围的参考。 如果你想观察它的行为,试着把这一行放在sub:

 rngChanged.Interior.ColorIndex = 4 

阅读更多例如这里 。