我的问题需要帮助。如何在此代码中包含两个不同的条件以隐藏/取消隐藏我的行,如果我的一个条件是 TRUE/FALSE 而另一个是带有某些值的下拉列表? 对于第一个标准,使用 True/False,如果选择了 True,则隐藏所有 False 行,对于另一个我有下拉菜单的标准,我唯一想要的就是当我选择 0 作为取消隐藏所有的值时行,以恢复我的原始数据状态。
p.s True/False 行是一个“辅助列”,我实际上在其中过滤了另一个值(从下拉列表中)。如果我选择 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
答案 0 :(得分:0)
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