excel - 根据单元格值隐藏Excel中的行
问题描述
我有一个多项选择,选项按钮,根据选择将单元格 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
如果该值介于 0 和 90 之间,则调用该过程需要该值来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
推荐阅读
- scala - 无法从 azure databricks 连接到 sql server 托管实例
- python - Python Dash Plotly:在悬停时显示默认最接近的数据或在图表中比较悬停时的数据
- python - 如何绘制具有不同 Y 和相同 X 的多个条形图?
- c - 每个静态和全局(未初始化/初始化变量)的数据段内存分配不正确
- android - 当我在搜索中输入内容时如何更新我的列表?
- git - 从特定 flyway 版本回滚更改
- python - python "if len(A) is not 0" vs "if A" 语句
- python - 反向int函数返回inf
- scala - @PrimaryKeyColumn annotations must have a type of PARTITIONED for scala Cassandra Spring Data application
- c++ - Assimp 处理一个节点