我找到了很多例子,但在我的情况下却不起作用,我也不知道为什么。 非常基本的代码:
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循环直接结束了。
编辑:非常重要,我只需要循环此工作表的命名范围,而不是整个工作簿
有想法吗?
我使用Excel 2016
答案 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