如何将单个值分配给整个命名范围 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
替换为您的范围的名称。
我正在尝试为整个命名范围分配一个值。
我知道这可以通过使用
来完成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
替换为您的范围的名称。