2014-12-01 84 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)