У меня довольно сложная книга Excel для отслеживания состояния проектов и других переменных.Рабочая тетрадь имеет в общей сложности 6 листов.На листе 1 все вводные данные сделаны.Остальные листы являются функциями, в основном отображающими значения из листа 1 по-разному.Большинство ячеек на листах 2-6 выглядят так = SHEETONE! Z5.
Я хочу скрыть строки только из листов 2-6, когда значение в AG этой строки равно "отменено" "завершено""rescoped".Это позволит мне на первом листе служить основной записью всех проектов.
В настоящее время VBA на листе 1 выглядит следующим образом, но, похоже, он не работает.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim lUsed As Long
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Or Target.Column = 6 Or Target.Column = 7 Or Target.Column = 8 Or Target.Column = 9 Or Target.Column = 10 Or Target.Column = 11 Or Target.Column = 12 Or Target.Column = 13 Or Target.Column = 14 Or Target.Column = 15 Or Target.Column = 16 Or Target.Column = 17 Or Target.Column = 18 Or Target.Column = 19 Or Target.Column = 20 Or Target.Column = 21 Or Target.Column = 22 Or Target.Column = 23 Or Target.Column = 24 Or Target.Column = 25 Or Target.Column = 26 Or Target.Column = 27 Or Target.Column = 28 Or Target.Column = 29 Or Target.Column = 30 Or Target.Column = 31 Or Target.Column = 32 Or Target.Column = 33 Or Target.Column = 34 Or Target.Column = 35 Or Target.Column = 36 Then
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
lUsed = InStr(1, oldVal, newVal)
If lUsed > 0 Then
If Right(oldVal, Len(newVal)) = newVal Then
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 2)
Else
Target.Value = Replace(oldVal, newVal & ", ", "")
End If
Else
Target.Value = oldVal _
& ", " & newVal
End If
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub
Любая помощь или руководство, которое вы можете дать мне, очень ценится!