VBA在特定单元格显示特定值时隐藏其他工作表中的行

时间:2019-03-26 15:57:44

标签: excel vba

我有一本相当复杂的Excel工作簿,用于跟踪项目和其他变量的状态。该工作簿共有6张纸。在工作表1中完成所有输入。其余工作表是主要以不同方式显示工作表1中的值的功能。表格2-6上的大多数单元格看起来都是= SHEETONE!Z5。

当该行的AG中的值等于“已取消”,“已完成”,“已限制”时,我希望仅从2-6页隐藏行。这使我可以将第一页用作所有项目的主记录。

目前,第一页上的VBA看起来像这样,但似乎无法正常工作。

 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

非常感谢您能给我的帮助或指导!

0 个答案:

没有答案