如何获取工作簿范围的名称?
在Excel中,我定义了两个名称。两者具有相同的名称,但范围和价值不同。一个是工作簿的范围,另一个是工作簿。如何获取工作簿范围的名称?
我无法检索书范围的名称,可以在一个单元格公式或VBA。在细胞 ThisWorkbook.names("myName")
,当我输入以下内容:
在VBA,下面的返回表范围的名称 =book.xlsb!myName
的Excel重写它: Sheet1!myName
如何在单元格公式和/或VBA中检索工作簿范围名称?
只有在新工作簿中的默认第一张纸发生此冲突。冲突确实不是发生与任何其他工作表上定义的名称。
如果您重命名默认的第一张工作表,您仍然会在该工作表上发生名称冲突 - 它不是关于工作表名称的。
您可以删除默认的第1张,以及新-1表使用的将要-第2页,将不有这个问题。它特定于新书中的默认第一张。
如果您永远不删除默认的第一张纸张,然后永远删除那张纸张,,那么表格范围的定义的名称将覆盖书籍范围的同名。
为此,要答案的OP,获得了一本书范围的名称时,有一个相同的表范围的名字最简单,最简单的方法,就是不会尝试这样的默认第1张。
不需要VBA。
只在Excel 2010中
注释和Microsoft link上面的测试使我的答案。感谢那位评论员。
使用这种 ThisWorkbook.Worksheets(“工作表Sheet1”)。范围(“MYNAME”)。值
他希望工作簿范围中的名称,而不是工作表范围中的名称。 –
如果粘贴我的一个新的模块代码,您可以在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”)也获得了工作表范围名称。
@DirkReichel每天都会学到新的东西,感谢评论。 –
欢迎您:) –
@JulianKuchlbauer,非常酷的使用非alpha函数名!你为什么用“t”前缀名字? Thx –
看到我的回答在 –
以下每一个可能的答案会更多的工作,然后只是让你的名字独特...是不是有一个选项来改变他们的名字?通常,这个“名称”应该是“唯一的”,以避免这些问题...... –
IMO,范围界定应足以隔离名称。例如,范围为sheet1和sheet2的名称不会发生冲突。在这种情况下,存在范围重叠,因此本地范围优先。但是,如果我们明确限定书名或图书对象的引用,那么逻辑上和直观上应该可以工作。如果不是一个实际的错误,这是一个不合逻辑的Excel设计折中。 –