我正在使用excel c/c++ sdk >= 2007(我把 2007 的链接作为参考)和 excel >= 2007。我(使用 sdk)编码了一个 xll,它提供了一个函数 F,这个函数 F 可以在excel表格中以两种方式调用:1)在excel单元格/单元格区域或公式栏中直接写入涉及F的公式2)在excel单元格中写入=F
,然后单击公式左侧的fx图标栏并使用excel的功能向导。
只有第二种情况让我感兴趣。在这种情况下,这将打开 excel 函数向导的对话框:一个具有 n 个单元格的窗口,每个单元格对应于 F 的一个参数(假设 F 是一个采用 n 个参数的函数)。现在,默认情况下,您是否在其中一个单元格中输入了一些内容,excel 会触发函数的重新计算。
当您不知道该函数并想要“发现它”时,这特别方便,因为您可以查看您键入的内容是否代表 F 等的正确参数,例如确实出现错误等。
但是如果 F 依赖于一个非常密集的数值例程(在 c++ 中),那么所有的重新计算都会花费很长时间,并且会冻结向导。(因为每次修改对话框中的单元格,都会触发重新计算。)
因此,我想做以下事情:通过函数向导“调用”函数时以某种方式停用重新计算。这就是低质量的解决方案。
理想情况下,我想做以下事情:自动触发重新计算,但确保(在 c++ excel sdk 代码中)它们是在调用向导的不同“线程”中完成的。这样就不会再结冰了。(以便可以保留向导的方便部分。)显然,如果我正确理解这篇 msdn 文章(也许不是,以防它不是同一个问题)在 excel 2007 下是不可能的,但它在 excel >= 2010 年。
由于 F 的用户正在使用各种版本的 excel - 主要是 2007 年,但其中一些甚至是 2003 年 - 即使我很想推到 2010 年(来吧,我们毕竟在现实生活中已经到了 2013 年! ),出于上述原因,我不会这样做,但也因为仅对某些 excel 版本有效的东西对我来说并不令人满意...
所以我想找到另一个解决方案。我听到人们为此谈论 RTD,但我不确定。
这就是为什么欢迎任何见解!提前很多。(对于问题的长度感到抱歉。)