繁体   English   中英

基于多个单元格值隐藏/取消隐藏行

[英]Hide/Unhide rows based on multiple cell values

我的问题需要帮助。 如何在此代码中包含两个不同的条件以使我的行隐藏/取消隐藏,如果我的一个条件是 TRUE/FALSE 而另一个是带有某些值的下拉? 对于第一个条件,使用 True/False,如果选择 True,则隐藏所有 False 行,对于我有下拉菜单的另一个条件,我唯一想要的是当我选择 0 作为取消隐藏所有的值时行,带回我原来的 state 数据。

ps True/False rows 是一个“帮助列”,我实际上是在其中过滤另一个值(从下拉列表中)。 如果我选择 TRUE,那么我将拥有所有需要的值,如果它是 FALSE,那么我会将它们从列表中排除。

Sub Hide_Unhide_Rows()

  If Range("B3").Value = "Passed" Then
    Rows("5:10").EntireRow.Hidden = True
  ElseIf Range("B3").Value = "Failed" Then
    Rows("5:10").EntireRow.Hidden = False
  End If

End Sub

切换隐藏/取消隐藏

  • 在第二个过程中调整Range("B3")和常量。

工作表模块,例如Sheet1

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("B3"), Target) Is Nothing Then
        toggleHide Range("B3")
    End If
End Sub

标准模块,例如Module1

Option Explicit

Sub toggleHide(ByVal CellRange As Range)
    
    Const RowsAddress As String = "5:10"
    Const cCol As String = "G"
    Const Crit As Boolean = False
    
    With CellRange.Worksheet
        If .AutoFilterMode Then .AutoFilterMode = False
        Dim rg As Range: Set rg = .Rows(RowsAddress)
        
        Select Case CellRange.Value
        Case "Hide"
            Dim drg As Range
            Set drg = rg.Columns(cCol).Offset(-1).Resize(rg.Rows.Count + 1)
            drg.AutoFilter 1, Crit
            If WorksheetFunction.Subtotal(103, drg) > 1 Then
                Dim frg As Range: Set frg = rg.SpecialCells(xlCellTypeVisible)
                .AutoFilterMode = False
                frg.EntireRow.Hidden = True
            End If
        Case "Show"
            rg.Hidden = False
        'Case Else
        End Select
    
    End With

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM