VBA, если формула не работает?

У меня есть некоторый код VBA, который работает между несколькими книгами

Я столкнулся с проблемой, когда я не могу применить эту формулу IF. Я не уверен, как я получаю Subscript out of range ошибка.

Я пытался использовать .Range("O"), .Range("O:O"), .Range("O", i) но все дают ту же ошибку 1004.

Я использую.Range() неправильно? Я смог использовать диапазон по другой формуле, поэтому не уверен, почему это не сработает.

Sub if_after()

    Dim co_detail As Workbook
    Set co_detail = ThisWorkbook

        With co_detail.Sheets("Detail")

            For i = 2 To 100
                .Range("O2").Formula = "=IF(L" & i & "=N" & i & ",'good','update')"
            Next i

        End With

End Sub

3 ответа

Решение

Это ноль, а не о, и для текста используются полные кавычки. Кавычки также должны быть удвоены в строке в кавычках.

.Range("o" & i).Formula = "=IF(L" & i & "=N" & i & ", ""good"", ""update"")"

Вы можете упростить весь этот код до следующего - вообще не нужно зацикливаться, вы можете просто Resize:

Sub If_after()
    ThisWorkbook.Sheets("Detail").Range("O2").Resize(99).Formula = "=IF(L2=N2,""good"",""update"")"
End Sub

Вместо того, чтобы использовать .Range("o" & i).Formula = … попробуйте использовать .Range("o" & i).FormulaR1C1 …, Я всегда использую FormulaR1C1 вместо Formula,

Другие вопросы по тегам