Excel 在VBA中沿命名范围循环,并为范围本身(而不是范围内的数据)提供hidden=true/false输出
我已将许多列命名为范围,例如。 DesCond1、DesDiff1、Comparison1、DesCond2、DesDiff2等。。。 我有一些按钮,它们使用宏来切换不同的可见或隐藏列。我已经添加了用于其中一个按钮的代码。Excel 在VBA中沿命名范围循环,并为范围本身(而不是范围内的数据)提供hidden=true/false输出,excel,vba,for-loop,Excel,Vba,For Loop,我已将许多列命名为范围,例如。 DesCond1、DesDiff1、Comparison1、DesCond2、DesDiff2等。。。 我有一些按钮,它们使用宏来切换不同的可见或隐藏列。我已经添加了用于其中一个按钮的代码。 目前,我已经编写了单独显示或隐藏每个范围的代码,但我希望有一个代码可以计算具有类似名称的范围的数量(DesCond1,DesCond2..DesCond(n)),然后在每个范围中循环自动检查隐藏状态,这样我就不必每次添加更多数据时都添加到代码中。这是到目前为止我的代码。到目前
目前,我已经编写了单独显示或隐藏每个范围的代码,但我希望有一个代码可以计算具有类似名称的范围的数量(DesCond1,DesCond2..DesCond(n)),然后在每个范围中循环自动检查隐藏状态,这样我就不必每次添加更多数据时都添加到代码中。这是到目前为止我的代码。到目前为止,这一切都很好
Sub ComparisonToggle1()
Dim ComparisonAll As Range, R_Cond As Range, R_Diff As Range
'set first of each range as identifier for decisions
Set R_Comp = Range("Comparison1")
'set all ranges under one name
Set CompAll = Union(Range("Comparison1"), Range("Comparison2"), Range("Comparison3")) 'name and add when new tests are added
If R_Comp.EntireColumn.Hidden = False Then 'False
CompAll.EntireColumn.Hidden = True 'hide all
ElseIf R_Comp.EntireColumn.Hidden = True Then 'True
CompAll.EntireColumn.Hidden = False 'vis all
End If
End Sub
这是对工作簿中的所有名称进行循环,但需要为其指定要筛选的组:
Option Explicit
Sub Test(Group As String)
Dim MyName As Name
For Each MyName In ThisWorkbook.Names
If MyName.Name Like "*" & Group & "*" Then
Range(MyName).EntireColumn.Hidden = True
End If
Next MyName
End Sub
Sub Main()
'This procedure calls the Test procedure feeding the variable Group as "Descond"
Test "Descond"
End Sub
如何向宏提供每次要隐藏的组?例如:使用“DesCond*”这样的描述,它会在所有命名范围中循环使用该名称和结尾的数字。此代码的作用是:如果MyName.Name像“2”&group&“,@JadeySwan McCay过滤范围名称。。。在您的示例中,
Group
将是DesCond
。此循环将遍历所有指定的范围,但只对包含DesCond
的范围执行代码。但是2是一个输入错误。所以我会在代码的某个地方使用group=“DesCond”
。。。我将使用什么代码隐藏这些范围。我不能使用MyName.entireclumn.Hidden=True
。。。。如何将其更改为范围选择?MyName
是一个Name
变量,而不是一个范围,因此您不能像处理范围那样处理它。您可以使用Range(MyName).EntireColumn.Hidden=True
代替@JadeySwan-McCay。至于怎么称呼这个,就像我的编辑一样。
Option Explicit
Sub Test(Group As String)
Dim MyName As Name
For Each MyName In ThisWorkbook.Names
If MyName.Name Like "*" & Group & "*" Then
Range(MyName).EntireColumn.Hidden = True
End If
Next MyName
End Sub
Sub Main()
'This procedure calls the Test procedure feeding the variable Group as "Descond"
Test "Descond"
End Sub