我需要遍历我工作表中的所有命名范围 我目前正在这样做:
For Each nm In ActiveWorkbook.Names
问题是此工作表的名称具有全局范围和工作表范围 此循环仅获取全局范围 我试过了:
For Each nm In Activeworkbook.Sheets(1).Names
但无法使其发挥作用。此循环也只获取具有全局范围的命名范围。想法?
我知道最好的解决方案是更改名称的范围,但我无法做到。
答案 0 :(得分:5)
今天能让它发挥作用。要在这里发帖,我的问题要简单得多,但这不是一个好主意。
我真正要做的是从工作表中导入一些值(使用application.getopenfilename选择并使用workbooks.open打开)。 所以我遍历了这个"导入的所有名字"选择并将这些范围的值导入到原始工作表中具有相同名称的范围。
for each nm in thisworkbook.names
if left(nm.name, 5) = "campo" then
'here I make my copy
end if
next nm
事实证明,当你有一个带有工作表范围的名称时,nm.name会返回如下内容:
nameOfSheet!nameOfField
所以我永远无法接受。为了解决我的问题,我使用了以下行。谢谢大家试图帮助我。
currentName = Mid(nm.Name, InStr(1, nm.Name, "!") + 1)
答案 1 :(得分:2)
Dim intCounter As Integer
Dim nmTemp As Name
For intCounter = 1 To ActiveWorkbook.Names.Count
MsgBox ActiveWorkbook.Names(intCounter)
Next intCounter
答案 2 :(得分:0)
Dim Obj as Variant
For Each Obj In ThisWorkbook.Names
If InStr(Obj.Name, "ExternalData") > 0 Then
Obj.Delete
End If
Next Obj
提炼hend的答案,我们可以使用InStr来确定一个字符串是否在名称范围的名称内,这适用于本地和全局范围名称范围