如何获取工作簿范围的名称?
How to obtain workbook-scoped name?
在Excel中,我定义了两个名字。两者名称相同,但范围和价值不同。一个范围为 sheet,另一个范围为工作簿。
我无法在单元格公式或 VBA 中检索图书范围的名称。
在 VBA 中,以下 returns sheet 范围的名称:
ThisWorkbook.names("myName")
在一个单元格中,当我输入以下内容时:
=book.xlsb!myName
Excel 重写为:
Sheet1!myName
如何在单元格公式中检索工作簿范围名称 and/or VBA?
使用这个
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
只需在公式中与“=§("myRange")”一起使用,或在 VBA 中与 §("myRange") 一起使用。
使用 §("Sheet1!myRange") 也可以获得 sheet 作用域名称。
此冲突仅发生在新工作簿中 默认第一个 sheet 时。冲突 不会 发生在任何其他 sheet 上定义的名称上。
如果您重命名默认的第一个 sheet,您仍然会在 sheet 上遇到名称冲突——这 与 sheet-名称无关.
您可以删除默认的第一个sheet,而新的第一个sheet-used-to-be-2nd-sheet,将没有有这个问题。具体到新书默认第1sheet
如果您从不删除默认的第一个 sheet,那么永远,在 上 sheet, sheet 范围定义的名称将永远覆盖书范围内的同名。
因此,对于 answer OP,当存在相同的 sheet-scoped 名称时,获取 book-scoped 名称的最简单、最简单的方法是 不尝试在默认的第一个 sheet.
不需要VBA。
仅在 Excel 2010 年测试。
一条评论和上面的 Microsoft link 让我找到了答案。感谢那个评论者。
在Excel中,我定义了两个名字。两者名称相同,但范围和价值不同。一个范围为 sheet,另一个范围为工作簿。
我无法在单元格公式或 VBA 中检索图书范围的名称。
在 VBA 中,以下 returns sheet 范围的名称:
ThisWorkbook.names("myName")
在一个单元格中,当我输入以下内容时:
=book.xlsb!myName
Excel 重写为:
Sheet1!myName
如何在单元格公式中检索工作簿范围名称 and/or VBA?
使用这个 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
只需在公式中与“=§("myRange")”一起使用,或在 VBA 中与 §("myRange") 一起使用。 使用 §("Sheet1!myRange") 也可以获得 sheet 作用域名称。
此冲突仅发生在新工作簿中 默认第一个 sheet 时。冲突 不会 发生在任何其他 sheet 上定义的名称上。
如果您重命名默认的第一个 sheet,您仍然会在 sheet 上遇到名称冲突——这 与 sheet-名称无关.
您可以删除默认的第一个sheet,而新的第一个sheet-used-to-be-2nd-sheet,将没有有这个问题。具体到新书默认第1sheet
如果您从不删除默认的第一个 sheet,那么永远,在 上 sheet, sheet 范围定义的名称将永远覆盖书范围内的同名。
因此,对于 answer OP,当存在相同的 sheet-scoped 名称时,获取 book-scoped 名称的最简单、最简单的方法是 不尝试在默认的第一个 sheet.
不需要VBA。
仅在 Excel 2010 年测试。
一条评论和上面的 Microsoft link 让我找到了答案。感谢那个评论者。