如何遍历命名的单元格和列表值为每个

我想获得每个命名单元格的值。 我从下面的代码开始。 它能够列出具有名称的单元格,但不显示正确的值。 在variablesn.value我得到一个引用,例如=Orders!$G$8 ,而我期望$ 25,因为$ 25是单元格的真正含义。

问题是:

如何使用for循环中的“Names”集合获取所包含的值?

码:

 Sub ListVarsWithValue() Dim n As Name Dim Count As Integer Dim s As String s="" For Each n In ActiveWorkbook.Names s = s + n.Name + "=" + n.Value + chr(10) '<-- n.value not OK Next n MsgBox s End Sub 

名称代表一定范围的单元格的名称。 当你在你的activeworkbook上运行这个工具时,你将会得到你不知道的Print_Areas和xlfn.countifs_以及其他奇怪的名字对象。 此外,如果您的范围是多个单元格范围(n.value).value将无法正常工作。 有两个很多的未知数来试图为每个名字取值。

我会在你的小组中进行testing,以确保有价值。 这是快速和肮脏的,但你明白了。

 Sub sdf() On Error Resume Next ''shouldn't use this but demonstrates how to get what you need For Each n In ActiveWorkbook.Names If Not IsError(Range(n.Value).Value) Then ''just try something like this Debug.Print n.Name & n.Value & Range(n.Value).Value End If Next End Sub 

那是因为一个名字的价值是它的公式forms的增广地址…………..你需要:

 Sub ListVarsWithValue() Dim n As Name Dim Count As Integer Dim s As String s = "" For Each n In ActiveWorkbook.Names s = s & n.Name & "=" & n.Value & "-" & Range(n.Value).Value & vbCrLf Next n MsgBox s End Sub 

在这里输入图像说明

逻辑是:

Range(n.Value).Value值如下所示:
Range("Sheet4!$B$4").Value如下所示:
bee这是真正的细胞内容!