在并行处理期间跟踪总体进度

时间:2019-05-17 18:02:38

标签: excel vba

我在Excel工作表中内置了DCF,以便用户可以根据需要灵活地编辑DCF。我在Excel VBA的for循环中迭代了1,000多个假设变化。在尝试加快速度的过程中,我在这里发现了Tom的多线程想法:https://analystcave.com/excel-tools/excel-vba-multithreading-addin/

我明白了这一点,并大大加快了计算速度。现在,我想跟踪用户表单中迭代的总体进度。

我尝试在此处使用http://www.cpearson.com/Excel/hidden.htm的Chip Pearsons隐藏名称解决方案。

不幸的是,当我在并行线程之一中使用它时,它中断了。

在工作线程中,我使用以下代码设置一个真正的全局变量,以跟踪线程中已完成了多少次迭代。这就是坏处:

SetHiddenName "Total_iter", (GetHiddenName("Total_iter") + 1)

隐藏名称功能/子:

Public Sub SetHiddenName(Name As String, Value As Variant)
    Application.ExecuteExcel4Macro "SET.NAME(""" & Name & """, " & Value & ")"
End Sub

Public Function GetHiddenName(Name As String)
    GetHiddenName = Application.ExecuteExcel4Macro(Name)
End Function

Sub DeleteHiddenName(Name As String)
    Application.ExecuteExcel4Macro "SET.NAME(""" & Name & """)"
End Sub

0 个答案:

没有答案