У меня есть DCF, встроенный в рабочий лист Excel, так что пользователи могут свободно редактировать DCF по мере необходимости. Я повторяю более 1000 вариантов предположений в цикле for в Excel VBA. Пытаясь ускорить это, я обнаружил идею многопоточности Тома здесь: https://analystcave.com/excel-tools/excel-vba-multithreading-addin/.
Я получил это на работу и значительно ускорил расчеты. Теперь я хотел бы отследить в пользовательской форме общий ход выполнения итераций.
Я попытался использовать решение для скрытых имен Chip Pearsons здесь: http://www.cpearson.com/Excel/hidden.htm.
К сожалению, когда я использую это в одном из параллельных потоков, он ломается.
В рабочих потоках я использую ниже, чтобы установить действительно глобальную переменную, чтобы отслеживать, сколько итераций было выполнено в потоках. Вот что ломает:
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