我使用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如果单元名称不存在,则会显示错误-这当然是预期的行为。但是,当我随后命名另一个单元格(我想要获得的名称)时,单元格中的错误仍然有效。重新计算无济于事。然后,我需要更改另一个单元格的值(我可以更改其值或更改其公式中另一个单元格的值)或其公式,以便重新计算该单元格中的值,因此我的单元格函数会正确刷新。我看不出要点是什么,当我命名要指向的单元格时该如何做才能使单元格刷新?这是Excel 2007,文件类型为xlsm。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我认为您需要将功能设置为Volatile在UDF的开头,添加以下代码:application.volatile见MSDN Library: Volatile Method [Excel 2003 VBA Language Reference] (adsbygoogle = window.adsbygoogle || []).push({}); 08-06 22:54