簡體   English   中英

根據單元格值在工作表上隱藏多行

[英]Hide multiple rows on sheet based on cell value

我正在嘗試使用Excel 2013在單元格為某個值時隱藏和取消隱藏行。

這種形式應該根據給出的答案進行擴展。

當C16 = YES隱藏行18:22

當C16 = NO時隱藏行24:38

當C16 =空白時隱藏行18:38

當L43 = YES時,取消隱藏第43:68行(如果不是,則顯示零)

我嘗試了2種方法。

第一:進入工作表-在右上角的下拉菜單中選擇更改

Private Sub Worksheet_Change(ByVal Target As Range)

    Range("A18:A22").EntireRow.Hidden = (Range("$C$16").Value = "Yes")

    Range("A24:A38").EntireRow.Hidden = (Range("$C$16").Value = "NO")

    Range("A18:A38").EntireRow.Hidden = (Range("$C$16").Value = "")

    Range("A43:A68").EntireRow.Hidden = (Range("$L$43").Value = "0")

End Sub

第二:來自這里的代碼:

根據單元格值取消隱藏行

使用這兩種方法,似乎只有一項更改正在進行。 因此,單元格C16發生了變化,但這意味着范圍L43被忽略了

同樣,當單元格為空白時,它什么也沒有改變。 它保持原樣,並且沒有按要求隱藏列。

您的范圍會重疊,因此即使C16 = "Yes" ,行C16 = ""也會覆蓋並取消隱藏它。 L42可能也是一個數字,在將其與文本值進行比較時,請嘗試使用以下內容。 您的代碼也將在工作表中的每個更改上運行,因此也將其更新為僅在C16L43更改時運行

Private Sub Worksheet_Change(ByVal Target As Range)
    With Me
        If Not Intersect(Target, Union(.Range("C16"), .Range("L43"))) Is Nothing Then
            .Range("A18:A38").EntireRow.Hidden = False
            Select Case LCase(.Range("C16").Value2)
                Case "yes"
                    .Range("A18:A22").EntireRow.Hidden = True
                Case "no"
                    .Range("A24:A38").EntireRow.Hidden = True
                Case Else
                    .Range("A18:A38").EntireRow.Hidden = True
            End Select

            .Range("A43:A68").EntireRow.Hidden = False
            Select Case LCase(.Range("L43").Value2)
                Case "yes"
                    .Range("A43:A68").EntireRow.Hidden = False
                Case Else
                    .Range("A43:A68").EntireRow.Hidden = True
            End Select
        End If
    End With
End Sub

評論后

根據您的評論,我將其分為兩部分。 第一個將監視下拉列表並在該單元格的更改上執行。 第二個將使用calculate事件進行更新。 將這些潛艇放在適用的表格中

Private Sub Worksheet_Change(ByVal Target As Range)
    With Me
        If Not Intersect(Target, Union(.Range("C16"), .Range("L43"))) Is Nothing Then
            .Range("A18:A38").EntireRow.Hidden = False
            Select Case LCase(.Range("C16").Value2)
                Case "yes"
                    .Range("A18:A22").EntireRow.Hidden = True
                Case "no"
                    .Range("A24:A38").EntireRow.Hidden = True
                Case Else
                    .Range("A18:A38").EntireRow.Hidden = True
            End Select
        End If
    End With
End Sub

Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
    With Me
        .Range("A43:A68").EntireRow.Hidden = False
        Select Case LCase(.Range("L43").Value2)
            Case "yes"
                .Range("A43:A68").EntireRow.Hidden = False
            Case Else
                .Range("A43:A68").EntireRow.Hidden = True
        End Select
    End With
    Application.EnableEvents = True
End Sub

嘗試:

With Worksheets("Sheet1")
    .Rows("18:68").EntireRow.Hidden = False
    opt = UCase(.Range("C16").Value)
    Select Case opt
    Case "YES"
        Rows("18:22").EntireRow.Hidden = True
    Case "NO"
        Rows("24:38").EntireRow.Hidden = True
    Case ""
        Rows("18:38").EntireRow.Hidden = True
    Case Else
        MsgBox "Invalid option in cell C16."
    End Select
    If UCase(.Range("L43").Value) = "Yes" Then
        Rows("43:68").EntireRow.Hidden = True
    Else
        MsgBox "Invalid option in cell L43."
    End Select
End With

...雖然我不明白您想設為0。

暫無
暫無

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

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