如何将单个值分配给整个命名范围 VBA

How to assign a single value to an entire named range VBA

我正在尝试为整个命名范围分配一个值。

我知道这可以通过使用

来完成
for each a in "Named Range"
    a.value = "Value"
next a

但是有没有一种方法可以在一行代码中完成呢?这样我就可以节省运行时间。

您可以导出命名范围的地址,

application.Names("NameOfRange").RefersToRange.Address

您可以将其传递给变量或直接将它们用作单行代码,例如,

ActiveSheet.Range(Application.names("NameOfRange").RefersToRange.Address).value = "test"

在您的问题中,您陈述了以下内容 'can be done':

for each a in "Named Range"
    a.value = "Value"
next a

但是,这不起作用,因为 "Named Range" 是一个字符串,而不是一个范围。

要使其成为一个范围,应为:

For Each a In Range("Named Range")
    a.Value = "Value"
Next a

如果可行,则可以替换为:

Range("Named Range") = "Value"

但是,这也不应该起作用,因为 "Named Range" 不是范围的有效名称,因为它包含 space.

因此,如果您在 sheet 上正确输入了相关的命名范围,并且 您修改了提供给匹配范围的名称。

简而言之,答案可能是:

Range("A1:C3") = "Value"

如果您想通过地址指定范围,或者如果使用命名范围:

Range("XXXXX") = "Value"

其中 XXXXX 替换为 给定 您的 命名范围的名称。

您还可以(并且应该)限定 sheet 名称的完整性;

Sheets("ZZZZZ").Range("XXXXX") = "Value"

其中 ZZZZZ 替换为 sheet/tab 的名称,XXXXX 替换为您的范围的名称。