Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 循环浏览Excel工作表中的所有命名范围_Vba_Excel - Fatal编程技术网

Vba 循环浏览Excel工作表中的所有命名范围

Vba 循环浏览Excel工作表中的所有命名范围,vba,excel,Vba,Excel,我需要在工作表中的所有命名范围中循环。 我目前正在这样做: For Each nm In ActiveWorkbook.Names 问题是此工作表的名称具有全局范围和工作表范围。 此循环仅获取全局范围。 我试过: For Each nm In Activeworkbook.Sheets(1).Names 但无法使它工作。此循环还仅获取具有全局范围的命名范围。想法? 我知道最好的解决办法是更改名称的范围,但我不能这样做。可以让它在今天起作用。在这里发帖,我把我的问题简单多了,但这不是一个好主意

我需要在工作表中的所有命名范围中循环。
我目前正在这样做:

For Each nm In ActiveWorkbook.Names
问题是此工作表的名称具有全局范围和工作表范围。
此循环仅获取全局范围。
我试过:

For Each nm In Activeworkbook.Sheets(1).Names
但无法使它工作。此循环还仅获取具有全局范围的命名范围。想法?

我知道最好的解决办法是更改名称的范围,但我不能这样做。

可以让它在今天起作用。在这里发帖,我把我的问题简单多了,但这不是一个好主意

Dim intCounter As Integer
Dim nmTemp As Name

For intCounter = 1 To ActiveWorkbook.Names.Count
   MsgBox ActiveWorkbook.Names(intCounter)
Next intCounter
我真正要做的是从工作表中导入一些值(使用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)

无法复制您的问题。轻松获得本地和全局名称。