Весь код работает, кроме 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