我的电子表格非常庞大,数百列数千或数行,我可以选中复选框来确定显示哪些列。问题是我现在想要根据每个列顶部的单元格值对列进行分组(第10行)。这将允许类别是动态的,并允许项目从一个类别更改为另一个类别,并根据该类别的复选框状态隐藏或显示。
我目前在宏中允许复选框在每个团队的隐藏和可见之间切换的代码如下所示。它们目前按20组分组,我想消除20的静态分组,并将其替换为第10行中的单元格包含类别的列数组(在此示例中目前为“Team 1”。
Sub Team1()
Set target = Range("B1")
If target.Value = "TRUE" Or target.Value = "True" Then
ActiveSheet.Columns("F:Y").EntireColumn.Hidden = False
ElseIf target.Value = "FALSE" Or target.Value = "False" Then
ActiveSheet.Columns("F:Y").EntireColumn.Hidden = True
End If
End Sub
答案 0 :(得分:1)
您可以使用For
循环检查每个Columns Row 10值,然后相应地设置.hidden
的{{1}}属性:
entireColumn
Sub Team1()
Dim target As Range
Dim checkCell As Range
Set target = Range("B1")
For Each checkCell In Range("F10:Y10").Cells
checkCell.EntireColumn.Hidden = (LCase(target.Value) = "true" And checkCell.Value = "Team 1")
Next checkCell
End Sub
循环将遍历For Each
cell
中的每个range
。
此处F10:Y10
不需要IF... Then
,因为.Hidden
有true/false
分配。 (LCase(target.Value) = "true" And checkCell.Value = "Team 1")
位将返回True
或False
,具体取决于这两个条件。