Excel揭秘27:谈谈DoEvents语句
当编写了一段涉及数千行的大循环的代码时,真是一种很棒的感觉。然而,当保存文件、点击运行查看结果时,如果进行一些其他操作,例如单击一下鼠标,Excel会转变成“无响应”状态,如下图1所示。
图1
此时,你可能会想:“Excel崩溃了吗?它还在运行吗?现在我该怎么做?”
之所以这样,主要是因为Windows认为Excel没有响应(因为Windows显示屏幕顶部的内容),并且它认为这是因为Excel将其所有资源用于实际运行你的宏程序。当你更新状态栏或者立即窗口时也会发生这种情况,你实际上可以看到更新停止和暂停。
解决此问题的一个简单方法是将语句DoEvents放置在循环中的某个位置。DoEvents语句本质上是将控制权传递回Windows,实际上是暂停你的代码并允许Windows将所有按键、命令和任何其他事件发送到Excel。例如,代码:
For i = 1 To 50000
Debug.Print '行号 -' & i
DoEvents
Next i
因此,如果想知道为什么Excel有时不响应Esc键或者Ctrl+Break组合键,将DoEvents语句合并到你的代码中将有助于使其更具响应性,并确保它在运行你的宏代码时继续更新。这实际上相当于让Excel在忙于做自已的事的同时看看操作系统的其余部分在做什么。
注:本文整理自www.sumproduct.com,供有兴趣的朋友参考。
赞 (0)