代码之家  ›  专栏  ›  技术社区  ›  hatcat

如何在Excel VBA 2010中生成消息泵?

  •  1
  • hatcat  · 技术社区  · 15 年前

    我猜缺少消息泵活动会引起内核的反感,那么如何刷新消息队列呢?或者我是不是完全错了?

    顺便说一句,我对这个很陌生,所以文档参考资料将非常受欢迎。

    家伙

    4 回复  |  直到 15 年前
        1
  •  7
  •   Alex K.    15 年前

    同意200h有点令人担忧的观点,但是你可以试试 DoEvents “声明” 放弃宏的执行,以便操作系统可以处理其他事件 实干家 有额外的时间惩罚)

        2
  •  1
  •   Michael    15 年前

    非常 效率低下,或者你用错了工具。

    Sub MarathonCalc
    
        Application.EnableEvents = False
        Application.ScreenUpdating = False
    
        ' Code to decode human genome goes here
    
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    
    End Sub
    

    再说一次,如果你发布了一些代码,也许我们可以帮助你找到为什么要花这么长时间。

        3
  •  0
  •   Dirk Vollmar    15 年前

    “不响应”并不意味着Excel崩溃,它只是意味着它实际上不响应窗口消息。

    除非那是个问题,否则你不必担心。我很担心你的评论,你希望任务需要200小时(超过一周!)。在我看来,你在这项工作中使用的工具不对。试着找出什么花了这么长时间,并解释你实际上在做什么。然后我们可以看到如何更好地解决这个任务。

        4
  •  0
  •   Nigel Heffernan    15 年前

    前面的答案给了你“DoEvents”,这是解决问题的第一步。

    实际上,有些事情可能会中断这个过程:{esc}和{ctrl break}(尽管这些可以暂时禁用),因此至少有一个其他线程一直在Excel中运行,并且您希望允许操作系统进入进程。。。你不会吗?

    如果未记录的消息和外部事件数量仍然存在,则应用程序将崩溃。根据我自己的测试,我认为这个数字是50;那里有关于注册的文件,但我没有链接到我认为不可靠的材料-我试过设置问题,发现它是无效的。

    那你现在在哪里?

    其次。。。您还看到了断点强加的“等待”状态允许一些事情自行解决。听起来像是一个外部进程(数据库查询?)异步运行:导致Excel崩溃的消息或事件是否来自该进程?

    推荐文章