VBA 工作表子在另一个工作表中创建命名区域

reg*_*e86 5 excel vba

我有一个需要在另一个工作表中创建命名范围的私有子。它需要保留一个工作表函数,因为它是一个Worksheet_Change子函数。我已经成功地使用此行将范围变量设置为等于另一张纸上的范围:

Set rng2 = Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col))
Run Code Online (Sandbox Code Playgroud)

但是,当我放入rng2代码的其他部分时,它只是指的是活动表中的正确范围。

这是我尝试过的:

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

和:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _
    "=" & rng2.Address & ""
Run Code Online (Sandbox Code Playgroud)

当底部函数作为一个整体位于存储在工作簿中的模块内时,它起作用,但同样,在工作表子中不起作用。我也在Sheets("Lists").rng2.Address底层尝试中尝试过。

A.S*_*S.H 3

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

rng2.address(external:=True)
Run Code Online (Sandbox Code Playgroud)