【问题标题】:Stop multithreading in Excel from VBA从 VBA 停止 Excel 中的多线程
【发布时间】:2021-03-07 22:59:13
【问题描述】:

我遇到了宏的速度问题。我已经关闭计算并重新打开它们。我关闭屏幕更新,然后重新打开。简单地说,我已经尝试了所有加快宏执行的技巧。执行时,它会在屏幕右下方显示线程计算。我希望能够以编程方式关闭多线程,因此当我将文件交给我们时,我不必告诉人们手动执行此操作。有没有办法做到这一点?

【问题讨论】:

  • 关闭多线程真的可以加快速度吗?据我所知,VBA 本身并不支持多线程。这只是用于计算的东西。而且我不明白为什么多线程会更慢。你在你的宏里做什么?有办法优化它。
  • 你为什么不发布一个你的慢宏,看看有人优化后它有多慢?
  • Excel VBA 是单线程的。请您使用相关代码和此线程计算的屏幕截图更新问题。我想你可能指的是计算出的细胞数?
  • 我从未听说过 Excel 或 VBA 中的多线程,或任何与这些事物相关的任何东西。当工作簿变得非常庞大,或者如果您正在执行大量计算,或者您正在使用动态函数或所有这些事情时,事情会变得非常缓慢。现在可能是开始学习 Python 的好时机!!

标签: excel vba multithreading slowdown


【解决方案1】:

这对我有用

    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

【讨论】:

    【解决方案2】:

    在做了更多研究之后,我确实找到了答案。关闭事件、屏幕更新和手动计算并不能解决问题。但这确实:

    Application.MultiThreadedCalculation.Enabled = False

    如果您将其放入脚本中,您可能会看到性能显着提高。我知道我做到了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2013-05-05
      • 2017-10-18
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多