在VBA中使用命名范围



如何在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

相关内容

  • 没有找到相关文章

最新更新