【问题标题】:How to unhide rows based on ANY of several criteria?如何根据多个条件中的任何一个取消隐藏行?
【发布时间】:2019-09-11 08:35:35
【问题描述】:

IF 函数检查表中所选列的任何行中的单元格是否已填充,例如第 1 列、第 1、2 和 3 行 - 如果填充了任何单元格 - 其他行将被取消隐藏。

该功能在表格被填充时起作用,但仅在从其中删除某些内容之前。

例如如果表格的第 1 列中的所有第 1、2 和 3 行都已填写 - 会出现其他行。如果我删除其中一个单元格值,例如column 1 row 1 - 额外的行再次隐藏。不隐藏的条件还在,第 2 行和第 3 行仍然填写。

Private Sub Worksheet_Change(ByVal Target As Range)    
    If Target.Column = 2 And Target.Row = 90 Then    
        If Target.Value = "" Then    
            Application.Rows("94:101").Select   
            Application.Selection.EntireRow.Hidden = True    
            Else: [94:101].EntireRow.Hidden = False    
        End If    
    End If

    If Target.Column = 2 And Target.Row = 91 Then    
        If Target.Value = "" Then    
            Application.Rows("94:101").Select    
            Application.Selection.EntireRow.Hidden = True    
            Else: [94:101].EntireRow.Hidden = False    
        End If    
    End If

    If Target.Column = 2 And Target.Row = 92 Then    
        If Target.Value = "" Then    
            Application.Rows("94:101").Select    
            Application.Selection.EntireRow.Hidden = True    
            Else: [94:101].EntireRow.Hidden = False    
        End If    
    End If    
End Sub

【问题讨论】:

标签: excel vba


【解决方案1】:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 2 And (Target.Column = 90 Or Target.Column = 91 Or Target.Column = 92) Then
        If Range("B90") = "" And Range("B91") = "" And Range("B92") = "" Then
            Range("A94:A101").EntireRow.Hidden = True
        Else
            Range("A94:A101").EntireRow.Hidden = False
        End If
    End If
End Sub

【讨论】:

  • 我已将其调整到我的表格 - 将 Target.Row 更改为 Target.Column,反之亦然 - 效果很好。非常感谢!
【解决方案2】:

首先检查@PEH 评论。 按照你的理念,试试这个:

Private Sub Worksheet_Change(ByVal Target As Range)    

With WorkSheets(1)
    If (.Range("B90").Value2 <> "") Or (.Range("B91").Value2 <> "") Or _
                       (.Range("B92").Value2 <> "") Then    
        If Target.Value = "" Then    
            .Rows("94:101").EntireRow.Hidden = True    
        Else
            .Rows("94:101").EntireRow.Hidden = False    
        End If    
    End If  
End With  
End Sub

只需将 WorkSheets(1) 自定义到您的 WorkBook。

【讨论】:

  • @Reh 谢谢你的帮助。我一定会浏览链接中提到的信息。
  • 大卫,谢谢您的回复!代码肯定看起来更好更专业。但是,仍然存在同样的问题。例如如果我在第 90 行和第 91 行放一些东西 - 94:101 就会出现。但是如果我删除例如90(91 保留,所以 94:101 也应该保留)- 94:101 再次隐藏...
  • 好的。根据您的情况,只要 B90、B91 或 B92 上的值之一是“”,那么所有内容都将被隐藏。所以问题是代码。你到底想要什么?如果所有的单元格都有一个值,它将起作用,如果一个没有值(“”),那么 enerything 将被隐藏。这是你的意图?
  • 有什么命令吗?我的意思是,如果 B90 是 "" 但 B91 和/或 B92 有任何值,那么应该显示所有内容吗?
  • 我希望它按以下方式工作:如果 B90、B91 或 B92 中的至少一个不是 "" -> 94:101 出现。如果它们都是空的 -> 94:101 被隐藏。
猜你喜欢
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多