[英]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
可能也是一個數字,在將其與文本值進行比較時,請嘗試使用以下內容。 您的代碼也將在工作表中的每個更改上運行,因此也將其更新為僅在C16
或L43
更改時運行
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.