为什么不使用自定义函数字段来重新计算名称?

时间:2013-05-17 08:40:17

标签: excel excel-vba excel-2007 cell vba

我使用vba函数获取单元格名称(取自Retrieving Cell name in Excel

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

当单元格的名称不存在时,它会显示错误 - 这当然是预期的行为。但是,当我然后命名另一个单元格(我想要获取的名称)时,我的单元格中的错误仍然有效。重新计算没有帮助。然后我需要更改其他单元格的值(我可以更改其值或更改其公式中的另一个单元格的值)或其公式,以便重新计算该单元格中的值,因此我的单元格为{ {1}}函数正确刷新。

我没有看到这一点为什么,当我命名我指向的单元格时,我能做些什么才能简单地刷新单元格?

这是Excel 2007,文件类型为xlsm。

1 个答案:

答案 0 :(得分:5)

我认为你需要将功能设置为易变性

在UDF的开头,添加以下代码:

application.volatile

请参阅MSDN Library: Volatile Method [Excel 2003 VBA Language Reference]