【发布时间】:2013-02-10 14:50:38
【问题描述】:
假设我有一个将在工作表中使用超过 100,000 次的 UDF。在函数中,有没有办法让它知道在批处理中还要调用多少次?基本上我想做的是让每个函数都创建一个待办事项列表。我想做类似的事情:
IF remaining functions to be executed after this one = 0 then ...
有没有办法做到这一点?
背景:
我想创建一个 UDF,用户只需提供参数(日期、小时、节点、类型)即可执行 SQL 查询。如果您愿意在每次运行函数时实际执行 SQL 查询,这很容易做到。我知道这很容易,因为我这样做了而且速度非常慢。我的新想法是让函数首先查看它要查找的数据是否存在于全局缓存变量中,如果不存在则将其添加到全局变量“job-list”中。
我想要它做的是当调用最后一个函数时,然后遍历作业列表并执行最少数量的 SQL 查询并填充全局缓存变量。一旦缓存变量已满,它会刷新表以使所有其他函数再次被调用,因为在随后的调用中,它们会在缓存中找到所需的数据。
【问题讨论】:
-
听起来这个控件无论如何都应该在函数之外。如果函数应该知道这一点,那将是一个糟糕的设计。该信息如何在 Batch 中可用?
-
我很确定 UDF 无法访问此类信息。
-
@Bulat,我所说的批处理是指要运行的函数队列,就像用户将相同的函数粘贴到一堆单元格中一样。似乎查尔斯建议的应用程序事件可能会起到作用,只是不确定如何为我的目的实现它。我会玩弄它,看看我学到了什么。
标签: sql excel user-defined-functions excel-2010 vba