如何在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
不太清楚需要什么。但是,如果您只想处理一本书中所有已命名的范围,而不考虑它们的名称,则只需通过WB名称集合:
Sub ListNamesAddresses()
Dim nm As Name
For Each nm In ActiveWorkbook.Names
Debug.Print nm.Name, nm.RefersToRange.Address
'do something with names and it's properties
Next
End Sub
输出:Name1 $D$4:$D$21
Name2 $E$4:$E$21
Name3 $F$4:$F$21
Name4 $G$4:$G$21
Name5 $H$4:$H$21
Name6 $I$4:$I$21