2014-10-07 59 views
1

我想從命名範圍中檢索一個值。想象一個具有X列和Y行的命名範圍。我想返回一個值,例如,從第2列第3行開始。我遇到的問題是,如果我編寫代碼並運行它,Excel會引發錯誤。如果我將代碼寫入監視窗口,它會返回正常。見下面從VBA中的命名範圍獲取值

... 
Dim NamedRange As Variant: NamedRange = Range(NamedRangeName) 
... 
Dim ReturnValue As Object 
Set ReturnValue = NamedRange(RowIndex, ColumnToRetrieveIndex) 'Throws Run-time error 424. Object required 

如果我寫 NamedRange(rowIndex位置,ColumnToRetrieveIndex) 到監視窗口,我可以看到電池的正確值。

我不太瞭解VB,所以我想這只是某種語法錯誤,我想將它傳遞給ReturnValue,但我無法弄清楚。

回答

5

使用此

ThisWorkbook.Names("myNamedRange").RefersToRange(1,1) 

要獲得命名範圍內「myNamedRange」

隨着ThisWorkbook.Names可以在當前工作簿中訪問的所有表的所有命名的範圍從第一個單元格的值。 使用RefersToRange您可以獲得對實際範圍的參考。

+0

這很有用,但如果您已將作用域命名爲名稱管理器中的特定工作表,則可能需要考慮類似於「ActiveSheet.Names」的內容。 – Unoembre 2017-07-27 19:01:32