Я надеялся на некоторое понимание ошибки, которую я не смог воспроизвести.Я случайно создал условие гонки vba?
У меня очень сложный рабочий лист, который меняет многие переменные, чтобы получить определенную ячейку aa5
, чтобы вернуть строку. если какое-либо условие не выполняется, оно возвращает 0
. формула для этой ячейки является
=IF(SUM(AA2:AA4)=0,SubItem,0)
, где aa2:aa4
являются условия, которые должны быть 0, чтобы вернуть строку и subitem
это именованный диапазон ячеек.
Как только он возвращает строку, у меня есть модуль для вставки ячейки aa5
на другой лист export
. Проблема в том, что после запуска программы (она занимает около 20 минут) я нахожу 0 значений в листе export
.
Я попытался вручную изменить все переменные на условие, создавшее ошибку, и ни один не появляется. Я также попытался запустить код по очереди и, похоже, не может его реплицировать.
Моя последняя соломинка вставлял в модуле, паст в export
лист
If Worksheets("analysis").Range("aa5").Value = 0 Then
Exit Sub
И еще у меня есть значения 0 после запуска!
Я не программист, но у меня есть некоторый опыт работы с кодом VBA, возможно ли, что я создал условие гонки, где 0 копируется до того, как обновляется if
, но он все еще проходит проверку vba?
Я побежал это и работает, я попробую еще несколько раз, прежде чем принять. Я бы предположил, что ячейка будет вычисляться во время 'if' в vba. Любая идея, почему этого не может быть? –
Я пытаюсь догадаться, что ваша книга имеет много формул и перерасчет занимает некоторое время. VBA не ждет конца пересчета, пока вы не назовете '.Calculate' явно. Другая возможная проблема - у вас может быть ручной режим расчета для вашей книги –