1

Весь код работает, кроме Private Sub Worksheet_Change_D(ByVal target As Range). Столбец I8:I200 имеет формулу, которая показывает обновленные изменения с другого листа. Если I8:I200 отображается как завершенный, то столбец F должен обновиться с учетом этих критериев. Он работает вручную, если я щелкаю в ячейке I8 и F8 изменится, но он должен делать это автоматически. У меня есть другое изменение рабочего листа VBA, которое влияет на столбец F, но это изменение вручную, и это хорошо. Это будет проблемой для этого кода? Как я должен идти об этом? Это под фактической рабочей таблицей, а не ThisWorkbook.

Private Sub Worksheet_Change_D(ByVal target As Range)
Dim WorkRng As Range
Dim rng As Range
Dim xOffsetColumn As Integer

Set WorkRng = Intersect(Application.ActiveSheet.Range("I8:I200"), target)
xOffsetColumn = -3

If Not WorkRng Is Nothing Then
Application.EnableEvents = False 'disable events
For Each rng In WorkRng
    If rng.Value = "" Then
        rng.Offset(0, xOffsetColumn).Value = "Not Started"
    Else
        If rng.Value = "Completed" Then
            rng.Offset(0, xOffsetColumn).Value = "Completed"
        Else
            If rng.Value = "Pending" Then
                rng.Offset(0, xOffsetColumn).Value = "Pending Prior Task"
            Else
                rng.Offset(0, xOffsetColumn).Value = "Not Started"
            End If
        End If
    End If
Next
Application.EnableEvents = True 'enable events
End If
End Sub

0