[求助]如何等待计算结束再运行以后的程序

您所在的位置:网站首页 vba关闭刷新和计算 [求助]如何等待计算结束再运行以后的程序

[求助]如何等待计算结束再运行以后的程序

2024-06-12 19:45| 来源: 网络整理| 查看: 265

其实这个问题已经有人提过(http://club.excelhome.net/viewthread.php?tid=308203),但没有得到回答。本人也遇到了相同的困惑。这个问题很简单,一个工作簿中有大量公式,程序使用Application.Calculate或Application.Calculatefull对工作簿进行计算,但后续代码需要等待这个计算过程结束后才运行,因此需要判断计算过程何时完成。以下是本人的思路:对CalculationState进行检测,根据EXCEL的帮助文件,CalculationState有三种状态,xlCalculating 、xlDone、xlPending,但没有对其含义作出解释,从字面上猜测,xlCalculating代表正在计算 、xlDone表示计算完成、xlPending表示计算过程被挂起。可是经过实际运行,如果用以下代码:

Do While Application.CalculationState xlDone ' 等待直到计算结束Loop

将陷入死循环,中断代码后查看CalculationState,发现是xlPending,于是改为判断是否是xlPending,但发现有时计算确实没有结束。再查EXCEL帮助,发现还有一个有关自动计算的设置:CalculationInterruptKey 属性,于是怀疑计算过程被用户中断了,那么是否可以将CalculationInterruptKey 属性设置为xlNokey来阻止用户中断计算过程:

preStat = Application.CalculationInterruptKey    ' 保留原来状态Application.CalculationInterruptKey = xlNoKey   ' 阻止用户中断计算过程Do While Application.CalculationState xlDone ' 等待直到计算结束 LoopApplication.CalculationInterruptKey = preStat    ' 恢复原来状态

不知上述代码能否实现标题的要求?请高手指点。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3