2016-08-05 46 views
1

在Excel中,我定义了两个名称。两者具有相同的名称,但范围和价值不同。一个是工作簿的范围,另一个是工作簿。如何获取工作簿范围的名称?

enter image description here

我无法检索书范围的名称,可以在一个单元格公式或VBA。在细胞 ThisWorkbook.names("myName") enter image description here

,当我输入以下内容:

在VBA

,下面的返回表范围的名称 =book.xlsb!myName 的Excel重写它: Sheet1!myName

如何在单元格公式和/或VBA中检索工作簿范围名称?

+0

看到我的回答在 –

+1

以下每一个可能的答案会更多的工作,然后只是让你的名字独特...是不是有一个选项来改变他们的名字?通常,这个“名称”应该是“唯一的”,以避免这些问题...... –

+0

IMO,范围界定应足以隔离名称。例如,范围为sheet1和sheet2的名称不会发生冲突。在这种情况下,存在范围重叠,因此本地范围优先。但是,如果我们明确限定书名或图书对象的引用,那么逻辑上和直观上应该可以工作。如果不是一个实际的错误,这是一个不合逻辑的Excel设计折中。 –

回答

0

只有在新工作簿中的默认第一张纸发生此冲突。冲突确实不是发生与任何其他工作表上定义的名称。

如果您重命名默认的第一张工作表,您仍然会在该工作表上发生名称冲突 - 它不是关于工作表名称的

您可以删除默认的第1张,以及新-1表使用的将要-第2页,将有这个问题。它特定于新书中的默认第一张。

如果您永远不删除默认的第一张纸张,然后永远删除那张纸张,,那么表格范围的定义的名称将覆盖书籍范围的同名。

为此,要答案的OP,获得了一本书范围的名称时,有一个相同的表范围的名字最简单,最简单的方法,就是不会尝试这样的默认第1张。

不需要VBA。

只在Excel 2010中

注释和Microsoft link上面的测试使我的答案。感谢那位评论员。

0

使用这种 ThisWorkbook.Worksheets(“工作表Sheet1”)。范围(“MYNAME”)。值

+0

他希望工作簿范围中的名称,而不是工作表范围中的名称。 –

2

如果粘贴我的一个新的模块代码,您可以在VBA和公式中使用此功能,在工作簿-范围获得名称:

Public Function §(ra As String) 
Application.Volatile 
Dim tName As Name 
For Each tName In ThisWorkbook.Names 
    If tName.Name = ra Then 
     § = tName.RefersToRange.Value 
     Exit Function 
    End If 
Next tName 
End Function 

与VBA “=§(” myRange “)” 中的公式或§( “myRange”)只要使用它。 使用§(“Sheet1!myRange”)也获得了工作表范围名称。

+0

@DirkReichel每天都会学到新的东西,感谢评论。 –

+0

欢迎您:) –

+0

@JulianKuchlbauer,非常酷的使用非alpha函数名!你为什么用“t”前缀名字? Thx –

相关问题