2014-07-24 3 views
1

Я пытаюсь вычислить лист (заданный вручную), пока не будет больше ошибок. У меня есть следующий код ниже, но, похоже, он не распознает переменные, которые я установил, так как значения этих переменных являются результатом формулы, а не тем, что находится в ячейке как значение. Я видел еще один вопрос по некоторой связанной теме, которая использовала функцию рабочего листа, но не смогла увидеть, как я могу поместить ее в свой код. Обычно, если я запускаю этот процесс без кода VBA, я делаю ручной расчет 5-6 раз, но для кода я хотел бы больше размещать. Остальная часть моего кода работает, именно эта часть испортила процесс. Полагаю, я мог бы просто вычислить лист, как обычно, в цикле для некоторого произвольного числа вычислений, но, если возможно, я бы хотел, чтобы он вычислялся только в том случае, если присутствуют две ошибки ниже. См. Ниже фрагмент кода.Установить переменную на основе ошибки/значения формулы в VBA

Dim n As Variant 
    Dim na As Variant 
    n = "#N/A Requesting Data..." 
    na = "#N/A Invalid Override" 

    Application.ScreenUpdating = False 
    Application.Calculation = xlCalculationManual 

    For Each Cell In Range("AZ13:BQ82") 
     If Cell.Value = n Then 
      Sheet1.Calculate 
     End If 
    Next 

    For Each Cell In Range("AZ13:BQ82") 
     If Cell.Value = na Then 
      Sheet1.Calculate 
     End If 
    Next 
+0

и? Что-то не так в коде? Ошибка ? –

+0

После того, как я запустил код, все еще остаются ошибки в ячейках, которые я вычисляю, которые бы исчезли, если код выше работал. – Doug

ответ

1

IsError ваш друг

Application.ScreenUpdating = False 
    Application.Calculation = xlCalculationManual 

    For Each Cell In Range("AZ13:BQ82") 
     If IsError(Cell.Value) Then 
      Sheet1.Calculate 
     End If 
    Next 
+0

+1. Но я должен добавить 'DoEvents' после' Calculate'. –

Смежные вопросы