我有如下代码,我想添加命名范围,其中地址是与其他命名范围连接,下面的代码不工作,提前感谢所有的想法。
ActiveWorkbook.Names.Add _
Name:="somerange", _
RefersTo:="=Sheet1!Cells(Range("namedrange1").row-5,Range("namedrange2").column)"发布于 2015-09-01 22:15:17
通过将命名范围namedrange1定义为具有工作簿作用域的RefersTo:=Sheet2!$B$7,以及将命名范围namedrange2定义为具有工作簿作用域的RefersTo:=Sheet3!$D$10,这将定义一个新的命名范围,命名范围为具有工作簿作用域的RefersTo:=Sheet1!$D$2的somerange。
With ActiveWorkbook
With .Worksheets("Sheet1")
With .Cells(Range("namedrange1").Row - 5, Range("namedrange2").Column)
.Name = "somerange"
End With
End With
End With发布于 2015-09-01 20:38:10
假设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!用于引用公式中的另一个工作表,与.Row和.Column一样,单元格也是VBA类型引用
编辑2:你也可以使用:ActiveWorkbook.Names.Add "SomeOtherRange", "=" & Sheet1.Range("NamedRange1").Offset(-5).Resize(1).Address,但这将硬编码地址-当你检查你的命名范围时,它看起来像:=Sheet1!$I$5 (如果你的命名范围以单元格$I$10开始)。
https://stackoverflow.com/questions/32331601
复制相似问题