2017-04-04 175 views
4

我有一個需要另一個工作表中創建一個名爲範圍的私人子。它需要保留一個工作表函數,因爲它是一個Worksheet_Change子。我已經成功能夠設定的範圍變量等於一個範圍上與該線路的另一片材:VBA工作表Sub創建命名範圍其他工作表

Set rng2 = Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col)) 

然而,當我把rng2到我的代碼的另一部分,它僅僅是指在正確的範圍內活動工作表。

這是我曾嘗試:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _ 
    "= " & Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col)).Address & "" 

和:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _ 
    "=" & rng2.Address & "" 

當它是存儲在工作簿作爲一個整體的內部模塊中,但同樣的底層函數的作品,不在工作表子中工作。 我也嘗試Sheets("Lists").rng2.Address在底部的嘗試。

回答

3

要讓地址包括表的名字,你必須設置external參數:

rng2.address(external:=True) 
+0

尼斯,我不知道!希望你不介意我調整了我的答案++ – CallumDA

+0

@CallumDA我看到了你的答案我會在評論中提出這個建議。沒問題。 :) –

+0

它完美的作品 - 非常感謝! – reggie86

3

RefersTo字符串需要像"=Lists!A1"。所以它缺少的是對列表工作表的引用。

嘗試這樣:

Dim wsLists As Worksheet 
Set wsLists = ThisWorkbook.Worksheets("Lists") 

With wsLists 
    Set rng2 = .Range(.Cells(2, Col), .Cells(Unique, Col)) 
    ThisWorkbook.Names.Add Name:="Level" & Col, RefersTo:="=" & rng2.Address(external:=True) 
End With 
相關問題