我使用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。
答案 0 :(得分:5)
我认为你需要将功能设置为易变性
在UDF的开头,添加以下代码:
application.volatile
请参阅MSDN Library: Volatile Method [Excel 2003 VBA Language Reference]