[英]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
Cell_Hider
需要一個參數,但您的代碼在沒有參數的情況下調用它Case 0 To 90: Cell_Hider
Cell_Hider
,則該過程需要值為1
以顯示行,而 0 或 2 到 90 將隱藏它們。 如果您將 100 放入該單元格,則根本不會發生任何事情。 聽起來不像你對我的期望。"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.