我有一个私有子,需要在另一个工作表中创建命名范围。它需要保留工作表函数,因为它是Worksheet_Change
子。我已经成功地设置了一个范围变量,它等于另一张纸上的范围:
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
。
答案 0 :(得分: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
答案 1 :(得分:3)
要让地址包含工作表的名称,您必须设置external
参数:
rng2.address(external:=True)