2015-09-01 78 views
0

我有類似如下的代碼,我想添加命名範圍哪個地址與其他命名範圍連接,下面的代碼不起作用,在此先感謝所有想法。命名範圍與來自另一個命名範圍的地址

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

「namedrange1」/「namedrange2」的定義在哪裏?你確定它可以從活動工作表訪問嗎? [它假定你想要的活動工作表,因爲你沒有告訴範圍功能從哪裏拉] –

+0

最後一行被標記爲紅色,它甚至不能執行 – Maciej

回答

1

提供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!被用來指另一片在公式中,細胞是VBA類型引用作爲是.Row和.COLUMN

編輯2: 您還可以使用: ActiveWorkbook.Names.Add "SomeOtherRange", "=" & Sheet1.Range("NamedRange1").Offset(-5).Resize(1).Address 但這將硬編碼地址 - 當您檢查您的命名範圍如下所示:=Sheet1!$I$5(如果您的命名範圍以單元格$ I $ 10開始)。

2

隨着定義爲RefersTo:=Sheet2!$B$7與工作簿範圍命名範圍namedrange1並與工作簿範圍定義爲RefersTo:=Sheet3!$D$10命名範圍namedrange2,這將定義名爲somerangeRefersTo:=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