从VBA停止Excel中的多线程
我的宏的速度遇到了问题。我已经关闭了计算并将其重新打开。我关闭屏幕更新,然后再打开。简单地说,我已经尝试了所有的技巧来加速宏的执行。执行时,它在屏幕右下角显示线程计算。我希望能够以编程方式关闭多线程,这样当我将文件提供给用户时,就不必告诉他们手动执行多线程。有什么方法可以做到这一点吗?这对我很有效从VBA停止Excel中的多线程,excel,vba,multithreading,slowdown,Excel,Vba,Multithreading,Slowdown,我的宏的速度遇到了问题。我已经关闭了计算并将其重新打开。我关闭屏幕更新,然后再打开。简单地说,我已经尝试了所有的技巧来加速宏的执行。执行时,它在屏幕右下角显示线程计算。我希望能够以编程方式关闭多线程,这样当我将文件提供给用户时,就不必告诉他们手动执行多线程。有什么方法可以做到这一点吗?这对我很有效 Sub turnOffCalc() Application.Calculation = xlCalculationManual Application.ScreenUpdati
Sub turnOffCalc()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
End Sub
Sub turnOnCalc()
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
在做了更多的研究之后,我确实找到了答案。关闭事件、屏幕更新和编制计算手册并不能解决问题。但这确实: Application.multi-threadedcalculation.Enabled=False
如果您将这一点放在脚本中,您可能会看到性能的显著提高。我知道我做到了 关闭多线程真的能加快速度吗?据我所知,VBA本身并不支持多线程。这只是一个计算的问题。我不明白为什么多线程会慢一些。你在宏中做什么?可能有办法优化它。为什么不发布一个慢宏,看看有人优化后它有多慢?Excel VBA是单线程的。请用相关代码和线程计算的屏幕截图更新问题。我想你可能指的是计算出的单元格数?我从来没有听说过Excel或VBA中的多线程,或者任何与这两者相关的东西。当工作簿变得非常庞大时,或者如果你正在进行大量计算,或者你正在使用动态函数,或者所有这些东西,事情就会变得非常缓慢。现在可能是开始学习Python的好时机!!