我希望循环遍历 activeworksheet
中找到的所有命名范围,然后对它们执行某些操作。我使用了下面的代码,但它似乎没有产生任何结果。另外,如果我可以循环遍历包含某些单词的命名范围,那就太好了。例如,我的命名范围被命名为 data1、data2、data3 等。我只想在它们包含单词 data 时对其进行处理。
For Each nm In Activesheets.Names
MsgBox "nm.name"
Next nm
最佳答案
如果您只想从事件工作表中获取名称,请使用:
Sub Test()
For Each nm In ActiveWorkbook.Names
If nm.RefersToRange.Parent.Name = ActiveSheet.Name Then MsgBox nm.Name
Next nm
End Sub
^ 此代码将仅返回引用事件工作表上的范围的命名范围。
nm.RefersToRange.Parent
将返回与该范围关联的工作表。
然后我们可以使用 .Name
检索其名称并将其与 ActiveWorksheet 名称进行比较。
在这里您可以看到我在 Sheet4
上有 2 个命名范围,在 Sheet3
上有 1 个
当我运行此代码时,它仅返回 MyName1
和 MyName2
- 它不包括 MyName3
,因为它不在事件工作表上.
此宏只会返回我的 ActiveSheet
(Sheet4
) 上的内容
关于vba - 循环遍历当前事件工作表中 Excel VBA 中的所有命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43238985/