我使用这个函数(这是 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”除外)。
编辑
我可以在公式中使用名称,没有问题。