【发布时间】:2016-07-24 14:19:06
【问题描述】:
我想检查多个命名范围的布尔值True/False。我需要检查 1 单元格验证范围(按顺序),如果结果是 True,我需要 .Select 相应的命名范围(即,没有相应 @ 的命名范围987654324@ 前缀并退出子程序。以下代码有效,但不是 DRY。
这里有一个 sn-p 来了解问题的要点,但这个 If-ElseIf 继续适用于许多其他命名范围:
If Range("validation_name") = True Then
Range("name").Select
Exit Sub
ElseIf Range("validation_category") = True Then
Range("category").Select
Exit Sub
ElseIf Range("validation_subcategory") = True Then
Range("subcategory").Select
Exit Sub
' ... and many more...
可能性/问题:
- 我想我可以使用命名范围数组和生成的“首选”命名范围数组吗?
- 也许我可以改用
collection? - 不确定是
for循环还是while循环更好?
【问题讨论】:
-
如果您正在检查某个范围内的单元格,您确实想测试 any 单元格是否包含 TRUE 或 all 单元格包含 TRUE ???
-
@Gary'sStudent 有一个单独的命名范围将检查 any 单元格是否包含 True - 该问题已预先处理。然后,我需要按顺序检查这些验证,以便我可以转到第一个失败的单元格;编辑问题以澄清。考虑填写表格,然后将用户发送到失败的第一个点。