命名的范围与来自另一个命名的范围的地址

我有像下面的代码,我想添加命名的范围哪个地址连接与其他命名的范围,下面的代码不起作用,在此先感谢所有的想法。

ActiveWorkbook.Names.Add _ Name:="somerange", _ RefersTo:="=Sheet1!Cells(Range("namedrange1").row-5,Range("namedrange2").column)" 

将名为rangerange的命名范围定义为具有工作簿范围的RefersTo:=Sheet2!$B$7 ,并将具有工作簿范围的命名范围namedrange2定义为RefersTo:=Sheet3!$D$10 ,这将定义一个名为somerange的新命名范围,其中RefersTo:=Sheet1!$D$2与工作簿范围。

 With ActiveWorkbook With .Worksheets("Sheet1") With .Cells(Range("namedrange1").Row - 5, Range("namedrange2").Column) .Name = "somerange" End With End With End With 

提供namedrange1是一个已定义的命名范围,您可以像正常的公式一样编写它:

ActiveWorkbook.Names.Add "somerange", "=OFFSET(Sheet1!NamedRange1,-5,0,1)"

在你的代码中,你可能引用了两个单独的工作表 – Sheet1.Cells和ActiveSheet.Range – 如果你没有明确地指向工作表名称,它将使用活动工作表。 你正在写: "=Sheet1!Cells(ActiveSheet.Range("namedrange1").row-5,ActiveSheet.Range("namedrange2").column)"

编辑:另外你的代码似乎是公式和VBA代码的组合 – Sheet1! 用于引用公式中的另一个工作表,Cells是一个VBAtypes的引用,就像.Row和.Column一样

编辑2:您也可以使用: ActiveWorkbook.Names.Add "SomeOtherRange", "=" & Sheet1.Range("NamedRange1").Offset(-5).Resize(1).Address但是这将硬编码地址 -你检查你的命名范围它将看起来像这样: =Sheet1!$I$5 (如果你的命名范围从单元$ I $ 10开始)。