Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VBA停止Excel中的多线程_Excel_Vba_Multithreading_Slowdown - Fatal编程技术网

从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的好时机!!