簡體   English   中英

根據單元格值隱藏 Excel 中的行

[英]Hide Rows in Excel based on cell value

我有一個多項選擇,選項按鈕,根據選擇將單元格 D7 的值從 1 更改為 5。 如果值為 1,我想取消隱藏第 16 到 26 行,如果不同則隱藏它們,對於其他每個值,我都想隱藏它們。

但我什至無法讓它工作,而且我不確定我做錯了什么。

更新:如果我更改單元格值,則不會發生任何事情,但是如果我刪除所有內容並添加它給出的值:“參數不是可選的”,它會為我突出顯示這部分代碼:

Private Sub Worksheet_Change(ByVal Target as Excel.Range)

謝謝

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If IsNumeric(Target) And Target.Address = "$D$7" Then
        Select Case Target.Value
            Case 0 To 90: Cell_Hider
        End Select
    End If
End Sub

Sub Cell_Hider(ByVal Target As Range)
    If Range("$D$7").Value = "1" Then
        Rows("16:26").EntireRow.Hidden = False
    Else
        Rows("16:26").EntireRow.Hidden = True
    End If
    
End Sub
  1. 您的過程Cell_Hider需要一個參數,但您的代碼在沒有參數的情況下調用它Case 0 To 90: Cell_Hider
  2. 如果值介於 0 和 90 之間,則調用Cell_Hider ,則該過程需要值為1以顯示行,而 0 或 2 到 90 將隱藏它們。 如果您將 100 放入該單元格,則根本不會發生任何事情。 聽起來不像你對我的期望。
  3. "1"是文本而不是數字!

像下面這樣的東西會起作用:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If IsNumeric(Target) And Target.Address = "$D$7" Then
        Select Case Target.Value
            Case 0 To 90: Cell_Hider Target
        End Select
    End If
End Sub

Sub Cell_Hider(ByVal Target As Range)
    If Target.Value = 1 Then
        Target.Parent.Rows("16:26").EntireRow.Hidden = False
    Else
        Target.Parent.Rows("16:26").EntireRow.Hidden = True
    End If
End Sub

即使這對我來說看起來不合邏輯,我也不確定你到底想要達到什么目的。

請注意,您可以將其縮短為

Sub Cell_Hider(ByVal Target As Range)
    Target.Parent.Rows("16:26").EntireRow.Hidden = Not Target.Value = 1
End Sub

隱藏/取消隱藏單元格更改的行

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim sCell As Range: Set sCell = Me.Range("D7")
    
    If Intersect(sCell, Target) Is Nothing Then Exit Sub
    
    If IsNumeric(sCell.Value) Then
        HideRows sCell
    End If

End Sub

Sub HideRows(ByVal SourceCell As Range)
    If SourceCell.Value = 1 Then
        SourceCell.Worksheet.Rows("16:26").Hidden = False
    Else
        SourceCell.Worksheet.Rows("16:26").Hidden = True
    End If
End Sub

暫無
暫無

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

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