在vba计算事件

时间:2015-09-05 22:37:10

标签: excel vba excel-vba

症状

完成计算事件发生后运行的VBA宏后,我的工作簿进入奇怪的半锁定状态。症状是:

  1. 当突出显示包含内容的任何单元格时,公式栏或窗口每秒闪烁几次。
  2. 我可以在任何空白单元格中输入公式和公式数组,并且计算正常进行,但闪烁仍在继续。
  3. 在自动/手动计算之间切换对闪烁没有影响。
  4. 与计算事件关联的数组公式具有一个奇怪的属性:在公式栏中编辑它们时,如果我按ENTER则没有任何反应。通常对于数组公式我会得到一个错误,但对于这些,光标只是停留在公式编辑窗口中,除非我按CTRL+SHIFT+ENTER。有关申请的详细信息,请参阅下文。
  5. 上下文:

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

    1. 用户输入公式
    2. 公式会创建一个'查询'存储在全局集合中的项目
    3. 在计算时,子例程处理所有查询,将SQL查询发送到远程数据库,接收响应,调整公式区域的大小以适合返回数据的大小,并将返回的数据存储在另一个全局集合中
    4. 调整调用区域大小时,公式函数会自动再次运行。这次,它看到数据在第二个全局集合中等待,并且数据大小合适,并且将数据写入工作表,保留公式
    5. 基于调试窗口,当闪烁开始发生时,看起来我的计算事件已经完成。我的所有全球收藏都是空的。我不知道应用程序在以这种方式锁定时该做什么,或者如何获得有关该问题的更多数据。它偶尔会发生。

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

1 个答案:

答案 0 :(得分:0)

希望它可以帮助那些有相同或类似问题的人。就我而言,工作簿中没有公式,也没有计算事件。仍然 - 宏执行后,公式窗口中的宏填充的值闪烁。

经过调试,它出现了与数组粘贴一致,宏反复回到程序开始,同时只粘贴部分数据。在我修复了数组值的计算之后,所以timeserial函数的参数是正确的,粘贴完整的数组成功而不退回到sub的开始。