Excel VBA中命名单元格的访问值(内容)

spe*_*ndo 5 excel vba reference excel-vba

这个

Dim WB As Workbook
Set WB = Workbooks.Open("foo\bar.xlsx", , True)
Debug.Print (WB.Names("named_cell").Value)
WB.Close (False)
Run Code Online (Sandbox Code Playgroud)

回报

='Sheet'!$C$377
Run Code Online (Sandbox Code Playgroud)

而不是单元格中的值C377.

我怎样才能收到细胞的价值呢?

Sam*_*Sam 5

几种方式:

Debug.Print Range("Named_Range").Value
Debug.Print [Named_Range].Value '// This uses the evaluate method
Run Code Online (Sandbox Code Playgroud)

如果工作表对象位于活动工作簿中(它应该是您打开的最后一个工作簿),则不需要使用工作表对象限定命名范围。


Axe*_*ter 5

如果WB.Names("named_cell")返回一个Name对象,则该对象具有RefersToRange属性。返回由Name对象引用的Range对象。请参阅https://msdn.microsoft.com/en-us/library/office/ff834918.aspx

所以

Debug.Print WB.Names("named_cell").RefersToRange.Value
Run Code Online (Sandbox Code Playgroud)

另请参见打开其他excel文件时Excel-VBA自身功能的故障