Мой проект - это симуляция. Он вычисляет формулы в наборе рабочих листов несколько раз с различными входными данными. Эти рабочие листы создаются для каждого запуска с нуля макросом VBA на основе шаблонов, объединяющих блоки ячеек с формулами, подобными кирпичикам LEGO. Рабочая лошадка моделирования - метод «worksheet.calculate». Это больше не работает, и я не мог найти причину. Ниже приведены строки кода, где выполнение макроса попадает в «вечный» цикл. Выполнение строки кода «ws_C_S.Calculate» занимает вечность. Диспетчер задач показывает Excel, использующий от 50% до 90% ЦП на этом этапе, и компьютер начинает издавать замечательный шум через несколько минут (может быть из-за тяжелых операций на диске). Я использую Office 365 под 64-битной Windows 10 и устанавливаю опцию явной опции в каждом модуле. Сохраненная рабочая книга выглядит нормально. Он ведет себя хорошо, когда открыт автономно от руки. Предложения, как это исправить, были бы очень оценены.
Вот строки кода, в которые попадает выполнение:
' create a fresh CalculBook with 1 worksheet and save it as xlsb file
Set wb_C = Workbooks.Add(xlWBATWorksheet)
Set ws_C_S = wb_C.Worksheets(1)
ws_C_S.Name = ws_S_Name
wb_C.SaveAs Filename:=CalculBookFullName, FileFormat:=xlExcel12
MsgBox "going to calculate the SystemSheet in the CalculBook"
' Here I had originally a number of Copy > PasteFormulas operations
' I removed them piece by piece because the final calculation failed
‘ I hoped to identify some faulty formulas this way
' But the error continues to happen even without any formulas in the worksheet!
ws_C_S.Activate ‘ it tried it with and without activating the worksheet, leading to the same result
ws_C_S.Calculate
MsgBox "SystemSheet calculated"