Vba 具有来自另一个命名范围的地址的命名范围

Vba 具有来自另一个命名范围的地址的命名范围,vba,excel,Vba,Excel,我有下面这样的代码,我想添加命名范围的地址是与其他命名范围连接,下面的代码不工作,提前感谢所有的想法 ActiveWorkbook.Names.Add _ Name:="somerange", _ RefersTo:="=Sheet1!Cells(Range("namedrange1").row-5,Range("namedrange2").column)" 如果namedrange1是一个已定义的命名范围,您只需像编写普通公式一样编写它: ActiveWork

我有下面这样的代码,我想添加命名范围的地址是与其他命名范围连接,下面的代码不工作,提前感谢所有的想法

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

如果namedrange1是一个已定义的命名范围,您只需像编写普通公式一样编写它:

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

在代码中,可以引用两个单独的工作表- Sheet1.Cells和ActiveSheet.Range-如果未明确引用工作表名称,则将使用活动工作表。 您正在有效地编写:
“=Sheet1!单元格(ActiveSheet.Range(“namedrange1”).row-5,ActiveSheet.Range(“namedrange2”).column)”

编辑: 此外,您的代码似乎是公式和VBA代码的组合-Sheet1!用于引用公式中的另一个工作表,单元格是VBA类型引用,如.Row和.Column

编辑2: 您还可以使用:
ActiveWorkbook.Names.Add“SomeOtherRange”、“NamedRange1”和Sheet1.Range(“NamedRange1”).Offset(-5)。Resize(1)。Address

但这将硬编码地址-当您检查您的命名范围时,它看起来像:
=Sheet1$I$5
(如果您的命名范围从单元格$I$10开始)。

如果namedrange1是一个定义的命名范围,您只需像编写普通公式一样编写它:

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

在代码中,可以引用两个单独的工作表- Sheet1.Cells和ActiveSheet.Range-如果未明确引用工作表名称,则将使用活动工作表。 您正在有效地编写:
“=Sheet1!单元格(ActiveSheet.Range(“namedrange1”).row-5,ActiveSheet.Range(“namedrange2”).column)”

编辑: 此外,您的代码似乎是公式和VBA代码的组合-Sheet1!用于引用公式中的另一个工作表,单元格是VBA类型引用,如.Row和.Column

编辑2: 您还可以使用:
ActiveWorkbook.Names.Add“SomeOtherRange”、“NamedRange1”和Sheet1.Range(“NamedRange1”).Offset(-5)。Resize(1)。Address

但这将硬编码地址-当您检查您的命名范围时,它看起来像:
=Sheet1$I$5
(如果您的命名范围从单元格$I$10开始)。

如果namedrange1是一个定义的命名范围,您只需像编写普通公式一样编写它:

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

在代码中,可以引用两个单独的工作表- Sheet1.Cells和ActiveSheet.Range-如果未明确引用工作表名称,则将使用活动工作表。 您正在有效地编写:
“=Sheet1!单元格(ActiveSheet.Range(“namedrange1”).row-5,ActiveSheet.Range(“namedrange2”).column)”

编辑: 此外,您的代码似乎是公式和VBA代码的组合-Sheet1!用于引用公式中的另一个工作表,单元格是VBA类型引用,如.Row和.Column

编辑2: 您还可以使用:
ActiveWorkbook.Names.Add“SomeOtherRange”、“NamedRange1”和Sheet1.Range(“NamedRange1”).Offset(-5)。Resize(1)。Address

但这将硬编码地址-当您检查您的命名范围时,它看起来像:
=Sheet1$I$5
(如果您的命名范围从单元格$I$10开始)。

如果namedrange1是一个定义的命名范围,您只需像编写普通公式一样编写它:

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

在代码中,可以引用两个单独的工作表- Sheet1.Cells和ActiveSheet.Range-如果未明确引用工作表名称,则将使用活动工作表。 您正在有效地编写:
“=Sheet1!单元格(ActiveSheet.Range(“namedrange1”).row-5,ActiveSheet.Range(“namedrange2”).column)”

编辑: 此外,您的代码似乎是公式和VBA代码的组合-Sheet1!用于引用公式中的另一个工作表,单元格是VBA类型引用,如.Row和.Column

编辑2: 您还可以使用:
ActiveWorkbook.Names.Add“SomeOtherRange”、“NamedRange1”和Sheet1.Range(“NamedRange1”).Offset(-5)。Resize(1)。Address

但这将硬编码地址-当您检查您的命名范围时,它看起来像:
=Sheet1$I$5
(如果您的命名范围从单元$I$10开始)。

命名范围namedrange1定义为
referesto:=Sheet2$B$7,工作簿范围和命名范围namedrange2定义为
referesto:=Sheet3$D$10
对于工作簿范围,这将定义一个名为somerange的新命名范围,其中
referesto:=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定义为
referesto:=Sheet2$B$7,工作簿范围和命名范围namedrange2定义为
referesto:=Sheet3$D$10
对于工作簿范围,这将定义一个名为somerange的新命名范围,其中
referesto:=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定义为
referesto:=Sheet2$B$7,工作簿范围和命名范围namedrange2定义为
referesto:=Sheet3$D$10
对于工作簿范围,这将定义一个名为somerange的新命名范围,其中
referesto:=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定义为
referesto:=Sheet2$B$7,工作簿范围和命名范围namedrange2定义为
referesto:=Sheet3$D$10
对于工作簿范围,这将定义一个名为somerange的新命名范围,其中
referesto:=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”/“namedrange2”在哪里定义?您确定可以从活动工作表访问它吗?[它假设您需要活动工作表,因为您没有告诉范围函数在何处进行pu