如何获取工作簿范围的名称?
在Excel中,我定义了两个名字。 两者具有相同的名称,但是范围和价值不同。 一个范围是一张纸,另一个是工作簿。
我无法在单元格公式或VBA中检索书籍范围的名称。
在VBA中,以下内容返回表单作用域名称: ThisWorkbook.names("myName")
在一个单元格中,当我input以下内容: =book.xlsb!myName
Excel将其重写为: Sheet1!myName
如何检索单元格公式和/或VBA中的工作簿范围名称?
如果您将我的代码粘贴到新的模块中,则可以在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
只需在公式中使用“=§(”myRange“)”或在VBA中使用§(“myRange”)即可。 使用§(“Sheet1!myRange”)也获得了工作表范围名称。
使用此ThisWorkbook.Worksheets(“Sheet1”)。范围(“myName”)。值
新冲突只发生在新的工作簿中的默认第一个工作表。 与任何其他工作表上定义的名称不发生冲突。
如果您重命名默认的第一张纸张,您仍然会在该纸张上发生名称冲突 – 这与纸张名称无关。
您可以删除默认的第一个工作表,而新的第一个工作表使用的第二个工作表不会有这个问题。 这是特定于新书中的默认第一张。
如果永远不删除默认的第一张纸张,然后永远删除该纸张,则纸张作用域定义的名称将覆盖书籍范围的同名。
因此,要回答 OP,在存在相同的工作表范围的名称时获取书籍范围名称的最简单,最简单的方法是不要在默认的第一个工作表上尝试。
不需要VBA。
仅在Excel 2010上进行testing。
上面的评论和微软链接使我得到了答案。 感谢那位评论员。