2014-12-01 87 views
1

我需要遍历表单中的所有命名区域。
我目前这样做:循环遍历Excel工作表中的所有命名区域

For Each nm In ActiveWorkbook.Names 

的问题是,这片拥有全球范围内与表范围的名称。
此循环仅获取全局范围。
我已经试过:

For Each nm In Activeworkbook.Sheets(1).Names 

,但不能使它工作。此循环也只能获取具有全局范围的命名范围。想法?
我知道最好的解决办法是改变名字的范围,但我做不到。

+1

无法复制您的问题。没有麻烦地获得本地和全球名称。 – ZAT 2014-12-01 17:59:36

回答

2
Dim intCounter As Integer 
Dim nmTemp As Name 

For intCounter = 1 To ActiveWorkbook.Names.Count 
    MsgBox ActiveWorkbook.Names(intCounter) 
Next intCounter 
4

可以使它今天工作。张贴在这里,我让我的问题更简单,但这不是一个好主意。

我真正做的是从工作表导入一些值(使用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)