【发布时间】:2016-12-20 19:10:22
【问题描述】:
我希望检测特定表上自动过滤器中的任何更改,以强制 UDF 对当前可见的表条目执行一些简单的算术运算以更新其结果。到目前为止,使 UDF 易失性没有任何影响,但它也不直接针对表。
这个解决方案 (https://stackoverflow.com/a/15906275/4604845) 对我不起作用,可能是因为我只有手动计算。
我有点太脏的解决方法是Workbook_SelectionChange,虽然 UDF 不会以这种方式杀死资源消耗,但我宁愿避免它,以防数据变得更大。此外,我有一些用户在使用计算机方面完全是新手,我无法确信我能让他们所有人都明白,他们需要在更新自动过滤器后单击其他内容才能使结果正确。
有什么想法吗?我尝试过Workbook_Change 和Workbook_Calculate,但它们都没有被自动过滤器更改触发(或者我不知道如何触发它们)。
【问题讨论】:
-
语法应该是
=SUBTOTAL( 3, TableName[Field] )而不是=SUBTOTAL( 3, tableName),并且它应该在用户每次点击[F9]时重新计算 -
是的,我知道语法。对不起,如果我之前不清楚。我设计的公式在显示所需信息方面工作得很好,我只是在努力使其在我的工作簿的限制内自动更新。
-
按下
[F9]时他们“更新”了吗? -
是的,如果我选择退出
EnableCalculation = False。我知道这会更新工作表,但它不像我希望的那样自动......而且开销很大,看看我在该特定工作表上的一些 10k + 功能区域中的情况。但即使有开销,它也是可行的,因此它仍然是几种可能的备份解决方案之一。 -
我已经有了答案,但在发布之前我还有一个问题:如果计算设置为
Manual,除了尝试检测AutoFilter的更改之外,用户如何确保在任何其他情况下更新计算(即对数据执行更改但对AutoFilter没有更改您在所有其他情况下使用Worksheet_Events吗?