workheet.calculate метод зацикливания - PullRequest
0 голосов
/ 07 ноября 2019

Мой проект - это симуляция. Он вычисляет формулы в наборе рабочих листов несколько раз с различными входными данными. Эти рабочие листы создаются для каждого запуска с нуля макросом 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...