遍历命名范围列表

时间:2018-06-22 09:23:27

标签: excel vba excel-vba excel-2016

我找到了很多例子,但在我的情况下却不起作用,我也不知道为什么。 非常基本的代码:

Sub Test()
Dim namCur As Name

For Each namCur In ActiveSheet.Names
MsgBox "Name: " & namCur.Name & ", Refers To: " & namCur.RefersTo
Next namCur
End Sub

当我使用Worksheets("Assumptions").Names

时遇到同样的问题

当我观看ActiveSheet.Name时,这是正确的,我得到“假设”,您可以在命名范围列表下方的图片上看到。但是我从来没有得到MsgBox,For循环直接结束了。 编辑:非常重要,我只需要循环此工作表的命名范围,而不是整个工作簿 有想法吗?

Printscreen

我使用Excel 2016

1 个答案:

答案 0 :(得分:2)

您的解决方案将仅列出范围设置为仅ActiveSheet的名称。

更改此

For Each namCur In ActiveSheet.Names

对此

For Each namCur In ThisWorkBook.Names

列出工作簿中的所有名称。然后,您可以检查RefersTo地址以检查它是否适用于ActiveSheet。

Sub Test()

Dim namCur As Name
Dim TargetSheetName As String

TargetSheetName = "Assumptions"

For Each namCur In ThisWorkbook.Names

    If Range(namCur.RefersTo).Parent.Name = TargetSheetName Then MsgBox "Name: " & namCur.Name & ", Refers To: " & namCur.RefersTo

Next namCur

End Sub