excel - 取消/隐藏行基于两个不同单元格的单元格更改独立取消/隐藏工作表的不同部分
问题描述
我有一个非常简单的代码,可以在更改 S55 的单元格值时很好地取消/隐藏行。但我需要一个代码,但我的工作表的两个部分独立工作完全相同。
我的意思是更改第一个单元格在开始时取消/隐藏一些行,在另一侧更改工作表末尾的另一个单元格取消/隐藏与开始时不同的其他行。
这是代码。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim HideRows As Range, ViewRows As Range
If Intersect([s55], Target) Is Nothing Then Exit Sub
Select Case [s55].Value
Case Is = 0
Set HideRows = Rows("60:298")
Set ViewRows = Nothing
End Select
On Error Resume Next
HideRows.Hidden = True
ViewRows.Hidden = False
End Sub
解决方案
您的要求并不完全清楚,因为您没有指定以哪种方式影响哪些行。但是,您可以尝试修改下面的代码以按照您想要的方式工作。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim HideRows As Range, ViewRows As Range
With Target
Select Case .Address
Case [S55].Address
If .Value = 0 Then
Set HideRows = Rows("60:298")
Set ViewRows = Rows("3:5")
End If
Case [S1].Address
If .Value = 0 Then
Set HideRows = Rows("3:5")
Set ViewRows = Rows("60:298")
End If
End Select
On Error Resume Next
HideRows.Hidden = True
ViewRows.Hidden = False
End With
End Sub
首先,遵循Select
声明。它有 2 个“案例”。如果单击的单元格( Target )为 [S1],则案例 #1 将生效,如果是 [S55],则案例 #1 将生效。如果这些都不适用,那么什么都不会做(因为用户点击了别处)。
当然 [S55] 是您已经知道的单元格,但 [S1] 是一个新单元格。您可以将单元格地址更改为您要使用的地址。
该过程设置了 2 个范围。一个叫HideRows
. 这是一组您想要隐藏的行。另一个被调用ViewRows
并包含您要使其可见的行。大多数情况下,这些范围都没有设置,代码也无法对它们做任何事情。在您现有的代码中,第二个功能未被使用。
现在,仅仅因为您单击了 [S55] 并不意味着这两个范围会发生任何事情。代码首先查看您输入的值。只有当您输入 0(零)时,它才会采取行动。这是检查这个的代码If .Value = 0 Then
:我为 [S1] 设置了相同的条件,但很容易更改。
现在,如果 [S55] 已更改并且现在的值为 0,则两个范围HideRows
和ViewRows
都将被设置。Rows("60:298") 将被隐藏,Rows("3:5") 将可见。当然,如果后者在指令之前是可见的,将没有效果。当然,范围也很容易改变。
您没有提到当 [S1] 设置为 0 时要隐藏哪些行。上面的代码说Set HideRows = Rows("3:5")
并且很容易更改。下一行说Set ViewRows = Rows("60:298")
。这也很容易改变。或者您可以删除该行。如果您这样做,范围ViewRows
将不会设置为任何内容,并且不会显示以前未显示的任何内容。
设置代码时,它是一个切换,隐藏和显示 [S1] 和 [S55] 的相同行。这很可爱,但可能没用。重点是展示如何做到这一点。例如,您可以让代码对 0 或 1 的条目做出反应 - 仅在输入 0 时隐藏某些内容,仅在条目为 1 时显示某些内容。
添加更多响应更改事件的单元格并让不同的事情发生以响应那里的更改也很容易。这一切都可以用目前的代码结构来完成。因此,如果您学习如何掌握它,那么花费时间是值得的。
推荐阅读
- c# - C# 在日期字段中输入 2 位日期默认为 19,而 2020 年之后的日期为 20
- python - 外部链接的 HDF5 属性只能在“r”模式下访问
- javascript - 我正在尝试创建一个表,但我不断收到错误:属性“postagens.titulo”的无法识别的数据类型
- database - Visual Studio 中的 DB 项目中的 DB 视图在同一项目中看不到同义词
- python - Python:在 Selenium Chromedriver 中禁用 WebRTC 检测
- bash - HP - UX - 使用 bash 脚本计算大小
- android - 如何在不更改```scope.launch {...}```的情况下在android中捕获所有协程未捕获的异常?
- spring-boot - Spring boot + slf4j + log4j + class org.apache.logging.slf4j.SLF4JLoggerContext 不能强制转换为class
- python - 如何在matplotlib中掩盖一行的一部分
- angular - 单击事件在模板内的 PrimeNg 列表框中不起作用