【问题标题】:Set range equal to multiple named ranges with line break使用换行符设置范围等于多个命名范围
【发布时间】:2020-02-20 05:11:05
【问题描述】:

我正在设置一个范围变量等于范围列表。列表太长了,我想使用换行符以便于管理。但是,我很难获得语法。我尝试了很多组合。

一行中的代码可以工作,看起来像这样(有更多的命名范围):

Dim xNamedRangeList As Range
Set xNamedRangeList = Range("NamedRange1, NamedRange2")

到目前为止,我最好的尝试是这个。

Set xNamedRangeList = " Range(""" & _
"NamedRange1," & _
"NamedRange2" &_
""")"

Debug.print 看起来像这样: Ranged("NamedRange1, NamedRange2")

虽然这在 debug.print 中有效,但当我将 xNamedRangeList 设置为等于它时,它肯定不起作用。我想我已经把公式变成了一个字符串,但不知道如何让它在公式中起作用。

【问题讨论】:

    标签: excel vba syntax


    【解决方案1】:

    正确的语法如@TimWilliams 所示。
    但是您说“有更多的命名范围”,所以请注意Range(address) 中使用的地址的长度限制为255 个字符。因此,如果您有很多范围,您可能会达到该限制并且它不起作用。

    如果是这种情况,您必须使用Application.Union method

    Dim xNamedRangeList As Range
    Set xNamedRangeList = Application.Union(Range("NamedRange1"), Range("NamedRange2")) 
    

    换行符总是 Space 后跟下划线 _Enter

    Set xNamedRangeList = Application.Union(Range("NamedRange1"), _
    Range("NamedRange2")) 
    

    【讨论】:

    • 换行符的语法是什么?
    • @KelvinNg 换行符的语法始终是空格,后跟下划线并回车。这将在下一行继续。
    • 谢谢!似乎有时需要 & 有时不需要。
    • @KelvinNg 没有。 & 只是连接字符串,实际上与换行无关。之所以会出现这种情况,是因为如果您想对字符串进行换行,则必须将其拆分为多个字符串,然后您需要将这些字符串与& 连接起来。但这也可以在一行中完成 "String1" & "String2" & "String3""String1String2String3" 相同,但第一个可以换行,而第二个不能。 • 由于在我的示例中我们换行不同的范围对象而不是字符串,因此我们不需要&
    • @KelvinNg 没有得到您的最后一个问题。但是以" 开头并以" 结尾的所有内容都是字符串。所以在Range("Name") 中,"Name" 是一个字符串。 Union 需要不同的 Range 对象作为参数(请参阅链接文档,它说参数需要是范围对象)。
    【解决方案2】:
    Set xNamedRangeList = Range("NamedRange1," & _
                                "NamedRange2," & _
                                "NamedRange3")
    

    【讨论】:

      【解决方案3】:

      如果 NamedRange1 和 NamedRange2 是变量,那么试试:

      Range(NamedRange1 + NamedRange2)
      

      【讨论】:

      • 不要使用加号 + 连接字符串。因此必须使用& 符号。如果你使用+,你可能会得到非常奇怪的副作用。 Excel 总是会尝试计算。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      相关资源
      最近更新 更多