遍历命名范围列表
Loop through named range list
我找到了很多例子,但它对我的情况不起作用,我不知道为什么。
非常基本的代码:
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
时,这是正确的,我得到 "Assumptions",您可以在命名范围列表下方的图片上看到。但是我从来没有得到 MsgBox 并且 For 循环直接结束。
编辑:非常重要,我只需要循环这个 sheet 的命名范围,而不是整个工作簿
有什么想法吗?
我用的是Excel2016
您的解决方案将仅列出范围设置为仅 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
我找到了很多例子,但它对我的情况不起作用,我不知道为什么。 非常基本的代码:
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
时,这是正确的,我得到 "Assumptions",您可以在命名范围列表下方的图片上看到。但是我从来没有得到 MsgBox 并且 For 循环直接结束。
编辑:非常重要,我只需要循环这个 sheet 的命名范围,而不是整个工作簿
有什么想法吗?
我用的是Excel2016
您的解决方案将仅列出范围设置为仅 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