在Excel中,我定义了两个名字。两者都具有相同的名称,但范围和价值不同。一个是作用于工作表,另一个是工作簿。
我无法在单元格公式或VBA中检索书籍范围的名称。
在VBA中,以下内容返回表格范围的名称:
ThisWorkbook.names("myName")
在单元格中,当我输入以下内容时:
=book.xlsb!myName
Excel将其重写为:
Sheet1!myName
如何在单元格公式和/或VBA中检索工作簿作用域名称?
答案 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
只需在公式中使用“=§(”myRange“)”或在VBA中使用§(“myRange”)。 使用§(“Sheet1!myRange”)也可以获得表格范围名称。
答案 1 :(得分:0)
使用它 ThisWorkbook.Worksheets( “工作表Sheet”)。范围( “MYNAME”)。值
答案 2 :(得分:0)
此冲突仅在新工作簿中的默认第一个工作表时发生。使用任何其他工作表上定义的名称发生不冲突。
如果您重命名默认的第一张表格,那么您仍然会在该表格上看到名称冲突 - 它的与表格名称无关。
您可以删除默认的第1张,而 不 的新的第1张使用的第2张将出现此问题。它特定于新书中的默认第一页。
如果您从未删除默认的第一张表,那么永远不会删除该表单表单范围内定义的名称将覆盖书籍范围的同名。
因此,对于回答 OP,这是获取具有相同工作表范围名称的书籍范围名称的最简单,最简单的方法,是不在默认值1上尝试它表。
不需要VBA。
仅在Excel 2010上测试。
上面的评论和Microsoft link让我得到答案。感谢那位评论者。