【发布时间】:2021-10-01 04:30:59
【问题描述】:
如何在 VBA 中使用动态命名范围?例如,现在我使用一个名为“Range1”的命名范围,但用户可能会选择不同的名称(我必须使用很多命名范围,所以我需要更通用的东西)。我是新手,但我应该将命名范围存储在变量中吗?提前致谢!
这是我目前所拥有的:
Dim MyArray
Dim dctCol As dictionary
Dim strKey1 As String
Set dctCol = New dictionary
MyArray = Range(ActiveWorkbook.Names("Range1").RefersToRange.Address)
For j = 2 To UBound(MyArray , 2)
strKey1 = Trim(MyArray (1, j)) & "," & Trim(MyArray (2, j)) & "," & Trim(MyArray (3, j))
dctCol(strKey1) = j
Next
【问题讨论】:
-
应该只是
Range("NamedRangeName")。所以对你来说,Range("Range1").Value因为你将它添加到数组中。 -
@Simon 但是如果用户将范围的名称更改为“MyRange”怎么办?即使更改了命名范围,我也希望我的代码能够运行。这就是我的意思:(
-
您可以创建另一个命名范围,链接到您想要的范围并在代码中使用它(因为它会在所需范围更改名称时自动更新)。否则,让此人使用
InputBox输入命名范围的名称 -
如果用户删除名称或更改命名区域,建议做什么?
-
最后我想将单元格从工作表(来自另一个工作簿)复制到该范围。因此,如果 Range 不存在,则不会发生复制。
标签: arrays excel vba range named-ranges