簡體   English   中英

如果范圍包含某些值,則隱藏特定行

[英]Hide specific rows if range contains certain values

我希望在自動執行數據表方面有所幫助。

在E7:V7(以下為r)的范圍內,我具有相同的下拉列表,每個下拉列表均具有四個不同的值(“-”;“打開”;“關閉”;“兩者”)。

r僅包含"-" ,我想隱藏21:50行。

  • "open"顯示第21:30
  • "close"顯示第31:50
  • "both"顯示第21:50

例如:

  • 如果E7 =“-”,F7 =“ open”,則顯示21:30行,而31:50隱藏。
  • 如果E7 =“-”,F7 =“ both”,則顯示所有行。

我希望它足夠清楚。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E7").Value = "-" Then
        Rows("21:50").EntireRow.Hidden = True
    ElseIf Range("E7").Value = "open" Then
        Rows("21:30").EntireRow.Hidden = False
        Rows("31:50").EntireRow.Hidden = True
    ElseIf Range("E7").Value = "close" Then
        Rows("31:50").EntireRow.Hidden = False
        Rows("21:30").EntireRow.Hidden = True
    ElseIf Range("E7").Value = "both" Then
        Rows("21:50").EntireRow.Hidden = False
    End If
End Sub

該代碼僅適用於一個條件,但我希望它有助於弄清情況。

如我的注釋中所建議:使用Application.Intersect方法以及Select Case語句

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AffectedCells As Range
    Set AffectedCells = Intersect(Target, Target.Parent.Range("E7:V7"))

    If Not AffectedCells Is Nothing Then
        Dim Cell As Range
        For Each Cell In AffectedCells
            Select Case Cell.Value
                Case "-"
                    Target.Parent.Rows("21:50").Hidden = True
                Case "open"
                    Target.Parent.Rows("21:30").Hidden = False
                    Target.Parent.Rows("31:50").Hidden = True
                Case "close"
                    Target.Parent.Rows("31:50").Hidden = False
                    Target.Parent.Rows("21:30").Hidden = True
                Case "both"
                    Target.Parent.Rows("21:50").Hidden = False
            End Select
        Next Cell
    End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM