excel - 根据选择隐藏行
问题描述
我有一堆可以使用下拉列表在单元格(C41:C59)中进行的选择,下拉列表的值也可以在单元格(E41:E59)中看到。对于每个选择,我希望显示或隐藏不同的行。如果下拉列表为 N/A 则隐藏,否则显示行。我无法解决的问题是每个选择都有不同的行,也有不同的行数。因此,我尝试为每个选择制作一个代码,并且仅在 E 列中的单元格更改时才更改此代码。这是我到目前为止所拥有的,但没有做任何事情。
If Not Application.Intersect(Target, Range("E41")) Is Nothing Then
If Range("E41") = "N/A" Then
[67:73].EntireRow.Hidden = True
Else
[67:73].EntireRow.Hidden = False
End If
End If
解决方案
下面的代码是一个事件过程。当在其代码表中找到该过程的工作表上的单元格发生更改时,它将运行。(该特定模块中代码的位置至关重要。)如果单个单元格被更改 - 忽略多个同时更改,例如可能由复制/粘贴操作引起的 - 代码将检查修改后的单元格是否在 C41 范围内: C59 或 E41:E59。如果是这样,它将根据修改后单元格的值是否为“N/A”来隐藏或显示同一工作表中的行。
Private Sub Worksheet_Change(ByVal Target As Range)
' 010
Dim TriggerRange As Range
Dim Rng As Range
' ignore simultaneous changes of many cells
If Target.Cells.CountLarge > 1 Then Exit Sub
Set TriggerRange = Application.Union(Range("C41:C59"), Range("E41:E59"))
If Not Application.Intersect(TriggerRange, Target) Is Nothing Then
Select Case Target.Row
Case 41, 46, 59
Set Rng = Range("67:73")
Case 50 To 59
Set Rng = Range(Rows(67), Rows(73))
Case Else
Set Rng = Range(Rows(67), Rows(73))
End Select
Rng.Rows.Hidden = (Target.Value = "N/A")
End If
End Sub
在此代码中,始终隐藏或显示相同的行。该代码用于演示如何根据更改的单元格所在的行指定不同的行范围,根据您的偏好使用不同的语法。
推荐阅读
- android - 更新 SDK:无法解决:com.android.support:appcompat-v7
- php - 如何将此 SQL 查询转换为 Codeigniter Active Record?
- javascript - JavaScript Firefox 自动将字符串转换为 NaN
- selenium - 打开浏览器后无法在边缘执行活动
- jquery - 如何使用 $.each 将 jquery 响应数据放入模态
- python - 图像未显示在 Excel 单元格中(python 和 openpyxl)
- batch-file - 与空格进行比较时,批处理 IF 语句给出语法错误
- c# - C# - 在主函数中使用异步
- segue - Swift4 Xcode9通过segue在ViewControllers之间传递变量
- xamarin - Syncfusion SfRating ValueChanged 事件到 Xamarin 表单中的命令