vba计算事件后,在公式窗口中诊断excel闪烁

症状

在完成计算事件发生时运行的VBAmacros后,我的工作簿进入一个奇怪的半locking状态。 症状是:

  1. 突出显示含有内容的单元格时,公式栏或窗口每秒闪烁数次。
  2. 我可以在任何空白单元格中input公式和公式数组,正常情况下可以进行计算,尽pipe闪烁仍在继续。
  3. 在自动/手动计算之间切换对闪烁没有影响。
  4. 与计算事件关联的数组公式会带来一个奇怪的属性:在编辑栏中编辑它们时,如果按ENTER不会发生任何事情。 通常对于一个数组公式,我会得到一个错误,但对于这些,光标停留在公式编辑窗口,除非我按CTRL+SHIFT+ENTER 。 请参阅下面的申请相关细节。

对于上下文:

我的应用程序是一个VBA加载项,它使用UDF来从远程MySQL服务器提取只读数据。 工作stream程涉及计算事件的背负,以避免excel UDF的不能改变调用它们的公式的大小。 过程如下:

  1. 用户input公式
  2. 公式将创build一个存储在全局集合中的“查询”项
  3. 经过计算,子程序处理所有查询,发送SQL查询到远程数据库,接收响应,调整公式区域的大小以适应返回数据的大小,并将返回的数据存储在另一个全局集合中
  4. 当调用区域resize时,公式函数会自动重新运行。 这一次,它看到数据正在第二个全局集合中等待,数据是正确的大小,并将数据写入工作表,保留公式

基于debugging窗口,看起来像我的计算事件已经完成闪烁开始发生。 我所有的全球collections都是空的。 我不确定当这种方式locking时应用程序在做什么,或者如何获得有关这个问题的更多数据。 它只是偶尔发生。

有没有人遇到过这样的事情?

希望它可以帮助有相同或类似问题的人。 在我的情况下,工作簿中没有公式,也没有计算事件。 仍然 – macros执行后,公式窗口中的macros填充值闪烁。

debugging完成后,出现与数组粘贴一致的情况,macros程序反复回到程序启动,粘贴部分数据。 在我固定了数组值的计算之后,以便timeserial函数的参数是正确的,粘贴完成数组成功,而不会退到子开始。