在Excel单元格中显示名称不起作用

我使用这个function(这是Excel 2007,文件types是* .xlsm)

Public Function CellName(oCell As Range) As Variant Dim oName As Name For Each oName In ThisWorkbook.names If oName.RefersToRange.Parent Is oCell.Parent Then If Not Intersect(oCell, oName.RefersToRange) Is Nothing Then CellName = oName.Name Exit Function End If End If Next CellName = CVErr(xlErrNA) End Function 

获取单元格的名称。

它工作正常,但可能我删除了一些行,它显示错误(所以它循环直到结束,没有名字find)。 对于工作簿中的每个单元格。 没有这个公式中的单元格是好的。

我曾经遇到这个问题,问题是 – 我不记得确切地说 – 有没有什么名字。 但是现在,当我打开名字pipe理器的时候,所有的名字都没有问题,没有任何一个放置在同一个单元格中

我写了一个macros:

 Sub names_delete() Dim oName As Variant Dim i As Integer i = 0 For i = 1 To ThisWorkbook.names.Count oName = ThisWorkbook.names(i).Name result = MsgBox(oName, vbYesNo + vbDefaultButton2, "Delete name?") If (result = vbYes) Then ThisWorkbook.names(i).Delete Exit Sub End If Next End Sub 

显示的名字是“_xlfn.IFERROR”。 我无法删除它。 这不是在名称pipe理器中显示。

我GOOGLE了,但唯一的答案是,我可以使用函数,不存在于我的Excel,所以除了2007年的Excel版本,但事实并非如此,2007年总是使用,但是,我可能已经保存了一次为2003年,我不记得了。

我的问题是 – 如何纠正这个函数没有错误,或者如何删除这个“_xlfn.IFERROR”的名字或者错误是在别的地方。

正如我写的,我已经有类似的问题,但我通过修复错误的名字来解决它。 这里都是正确的(除了“_xlfn.IFERROR”)。

编辑

我可以在公式中使用名称,没有问题。

名称“_xlfn.IFERROR”被隐藏,这意味着您不能在Excel的本地名称pipe理器中看到它。 您需要先使用第三方解决scheme(如JPK的名称pipe理器或Macabacus的名称清除器)取消隐藏名称。 然后,返回到Excel的本地名称pipe理器并删除名称。

我今天也遇到了这个问题。 从我在互联网上阅读的内容来看,Windows首先没有任何macros/macros编辑器(可怕但是…)的Excel 2007。 这就是为什么例如带有macros的文件必须有一个独立的扩展名。 不过,他们最终还是采取了包括2003年macros观体系在内的保护措施,这个体系并不完全稳定(特别是制定者)。 对于这个_xlfn.XXXXX隐藏名称,它们与2007/2010新function有关,2003年不支持。这意味着如果您想在macros中使用名称播放,则不能在表单中使用带有XXXXX名称的函数。 删除后,您必须保存,closures并重新打开该文件以隐藏名称消失。

希望它可以帮助。

丹尼斯

选项显式
公共函数CellName(oCell作为范围)作为变种

Dim oName As string
对于每个oName在工作表(“sheet1”)。range(“A1:Z65536”)
如果oName.name = oCell.name

然后cellname = oName.name
'你需要的任何其他代码
其他

  exit function 

万一

下一个结束function