VBA工作表子在另一个工作表中创build命名范围

我有一个私人小组需要在另一个工作表中创build命名区域。 它需要保留一个工作表函数,因为它是一个Worksheet_Change子。 我已经成功地使用这一行在另一个工作表上设置了一个等于一个范围的范围variables:

 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在底部尝试。

要使地址包含表单的名称,您必须设置external参数:

 rng2.address(external:=True) 

你的RefersTostring需要像"=Lists!A1" 。 所以它缺less的是对列表工作表的引用。

尝试这样的事情:

 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