我在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