У меня есть примерные данные моего проекта. Как вы можете видеть, есть 4 столбца: крайний срок, отправленный, описание, и days_delayed. Кроме того, в том же листе у меня есть форма вставки данных. Где Диапазон G1 - крайний срок, а G3 - фактическая дата, когда пользователь представляет свой документ.
В этом коде вы будете использовать условный оператор, написанный формульным способом внутри vba. Чтобы каждый раз при добавлении новой строки формула следовала и копировалась в соответствующий диапазон ячеек.
Private Sub CommandButton1_Click()
Dim Deadline, Submitted, Description, Days_Delayed As String
Worksheets("Sheet3").Select
Deadline = Range("G1")
Submitted = Range("G3")
Description = "=IF(AND(D2>0,ISBLANK(B2)),"NO-
DOCUMENT",IF(AND(D2<=0,NOT(ISBLANK(B2))),"ON-TIME", IF(AND(D2 > 0,NOT(ISBLANK(B2))),"DELAYED")))"
Days_Delayed = "=IF(COUNT(A2:B2)=2,B2-A2,IF(B2="","0"))"
Worksheets("Sheet3").Select
Worksheets("Sheet3").Range("A2").Select
If Worksheets("Sheet3").Range("A2").Offset(1, 0) <> "" Then
Worksheets("Sheet3").Range("A2").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Deadline
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Submitted
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = Description
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = Days_Delayed
End Sub
Этот код работает нормально, но когда я попытался реализовать формулу внутри кодов VBA. В сообщении об ошибке говорится «Конец оператора»
Исправлено Пэ
Вставка формулы в VBA должна быть такой:
Days_Delayed = "=IF(COUNT(N36:O36)=2,O36-N36,IF(O36="""",TODAY()-N36))"
Другой вопрос:
Поскольку добавление новой строки представляет собой новые данные, и формула не должна помещать определенный диапазон внутри них.
Days_Delayed = "=IF(COUNT(N36:O36)=2,O36-N36,IF(O36="""",TODAY()-N36))"
В этой формуле вы можете видеть, что диапазоны формул определены. Я пытаюсь исправить что-то вроде этого:
Days_Delayed = "=IF(COUNT(N(i):O(i))=2,O(i)-N(i),IF(O(i)="""",TODAY()-(i)))"
Вы можете видеть, что есть переменная i, поэтому, когда придет новая строка. Формула автоматически знает, какие ячейки необходимо вычислить. Я предполагаю, что циклы - подходящий способ для этого. Потому что если я останусь той же формулой с определенными диапазонами. Выход будет таким же. Это возможно?