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

这个

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

回报

 ='Sheet'!$C$377 

而不是单元格C377中的值。

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

如果WB.Names("named_cell")返回一个Name对象,那么这个对象就有一个RefersToRange属性。 这将返回由Name对象引用的Range对象。 请参阅https://msdn.microsoft.com/zh-cn/library/office/ff834918.aspx

所以

 Debug.Print WB.Names("named_cell").RefersToRange.Value 

另请参阅打开其他excel文件时Excel-VBA自带function的故障 。

几种方法:

 Debug.Print Range("Named_Range").Value Debug.Print [Named_Range].Value '// This uses the evaluate method 

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

一旦build立了命名范围,Excel就知道它的Parent ,所以:

 Sub dural() Dim r As Range Set r = Range("named_cell") MsgBox r.Parent.Name & vbCrLf & r.Address(0, 0) & vbCrLf & r.Value End Sub 

是获得有关这个范围的信息的一种方法:

在这里输入图像说明

这使用Range对象的属性而不是Workbook对象。