Excel 将命名范围名称读入VBA数组
我试图找出如何将给定工作表中的范围名称放入数组中。我已经有了listnames函数,但它似乎一次就列出了它们。有什么想法吗?比如:Excel 将命名范围名称读入VBA数组,excel,vba,Excel,Vba,我试图找出如何将给定工作表中的范围名称放入数组中。我已经有了listnames函数,但它似乎一次就列出了它们。有什么想法吗?比如: Sub listum() Dim ary(1 To 3) As String With ActiveWorkbook If .Names.Count > 0 Then For i = 1 To .Names.Count MsgBox (i & " " &
Sub listum()
Dim ary(1 To 3) As String
With ActiveWorkbook
If .Names.Count > 0 Then
For i = 1 To .Names.Count
MsgBox (i & " " & .Names(i).Name & " " & Range(.Names(i)).Address)
ary(i) = .Names(i).Name
Next
End If
End With
End Sub
将显示它们并将它们放入数组中
调整数组大小以满足您的需要。
确保工作簿中没有非范围名称。我的版本是我使用的动态数组:
Sub TestNamedRange()
Dim i As Long
Dim intCount As Long
Dim NameArray() As String
'count number of named ranges
intCount = ThisWorkbook.Names.Count
ReDim NameArray(intCount) 'for dynamic number of named ranges
'assign all names to each array element
For i = 1 To intCount
NameArray(i) = ThisWorkbook.Names(i).Name 'remove .Name if you want address range only
Next
'check array elements
For Each ele In NameArray
Debug.Print ele
Next
'manipulate your array here
End Sub
虽然我很少看到有超过32767个名字的工作簿,但最好使用长而不是整数。由于使用整数在长时间内没有任何优势,我建议始终使用Long以避免类似问题。非常感谢!我要给这个打个电话go@JamesMcS请放弃它。我刚开始:-)谢谢。非常感谢,我会给你一个机会。我刚刚试过这个,我不知道“名称”-但它将工作簿名称、打印区域等放入数组中,这会造成问题。有什么想法吗?@JamesMcS您需要测试它们……毕竟,
PrintArea
是一组有效的单元格,就像任何其他用户定义的命名区域一样@詹姆士:你有没有找到办法把他们排除在外?我正在使用命名范围为word构建一个小型模板导出器,最好排除内置字段