gpt4 book ai didi

vba - 遍历多个命名范围并转到类似的命名范围 VBA

转载 作者:行者123 更新时间:2023-12-04 21:10:08 27 4
gpt4 key购买 nike

我想检查多个命名范围的 bool 值 True/False值(value)。我需要检查 1 单元格验证范围(按顺序),如果结果是 True , 我需要 .Select相应的命名范围(即没有相应 "validation_" 前缀的命名范围并退出子例程。以下代码有效,但不是 DRY。

这是一个了解问题要点的片段,但是这个 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循环会更好吗?
  • 最佳答案

    一些“额外干燥”的代码

    Sub main()
    Dim a As Variant
    For Each a In Array("name", "category", "subcategory")
    If Range("valid_" & a).Value = True Then
    Range(a).Select
    Exit Sub
    End If
    Next a
    End Sub

    Sub main2()
    Dim r As Range, f As Range
    Set r = Union(Range("validation_date"), Range("validation_name"), Range("validation_subcategory"), Range("validation_category"))
    Set f = r.Find(what:="true", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)
    If Not f Is Nothing Then Range(Replace(f.name.name, "validation_", "")).Select
    End Sub

    关于vba - 遍历多个命名范围并转到类似的命名范围 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38553011/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com