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

时间:2013-04-15 08:59:13

标签: excel excel-vba excel-formula cells vba

我使用此功能(这是Excel 2007,文件类型是* .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

获取单元格的名称。

它工作正常,但可能我删除了一些行并显示错误(因此它循环直到结束,没有找到名称)。对于工作簿中的每个单元格。配方中没有这个细胞就可以了。

我曾经遇到过这个问题而问题是 - 我不记得确切 - 有些名字指向什么。但是现在,当我打开名称管理器时,所有名称都没有,没有任何名称与其他名称相同。

我写了一个宏:

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”。我无法删除它。这不会出现在名称管理器中。

我用谷歌搜索,但唯一的答案是我可以使用我的Excel中不存在的功能,所以除了2007 Excel版本,但事实并非如此,2007年总是被使用,但是,我可能已经保存了一次2003年,我不记得了。

我的问题是 - 如何纠正此函数没有错误,或者如何删除此“_xlfn.IFERROR”名称,或者错误可能在其他地方。

正如我所写,我已经遇到了类似的问题,但我通过修复错误的名称解决了这个问题。这里都是正确的(“_xlfn.IFERROR”除​​外)。

修改

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

3 个答案:

答案 0 :(得分:1)

名称" _xlfn.IFERROR"是隐藏的,这意味着您无法在Excel的本机名称管理器中看到它。您需要首先使用第三方解决方案取消隐藏名称,例如JPK的名称管理器或Macabacus'名称洗涤器。然后,返回Excel的本机名称管理器并删除名称。

答案 1 :(得分:0)

我今天也遇到了这个问题。 从我在互联网上阅读的内容来看,Windows首先没有任何宏/宏编辑器的Excel 2007(可怕但是......)。这就是为什么具有宏的实例文件必须具有独立的扩展名作为没有的扩展名。 然而,他们最终通过包括2003年宏观系统来应对抗议,这种系统并不完全稳定(特别是配方师)。 关于这个_xlfn.XXXXX隐藏名称,它们与2007/2010新功能相关,2003年不支持。这意味着如果要在宏中播放名称,则不得在工作表中使用带有XXXXX名称的功能。 删除后,您必须保存,关闭并重新打开文件,以使隐藏名称消失。

希望它可以提供帮助。

丹尼斯

答案 2 :(得分:-1)

  

选项明确

  公共功能CellName(oCell As Range)As Variant

     

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

     

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

 exit function 
     

结束如果

     

下一个结束功能