自定义函数不能修改其它单元格的值,也就是说,不能向 rag 参数传递不是输入公式的单元格的引用,换句话说,在A1 单元格输入公式,只能传递 A1 作为参数。 但是如果传递本身单元格的引用的话,因为的代码又设置了单元格的值,就会无限循环调用函数。 可以把自定义函数改为 sub。 例如下列Sub可以实现: Sub ShowErro() If ActiveCell.Value = Null Then Return End If If (MsgBox("输入错误", vbRetryCancel) = vbCancel) Then ActiveCell.Value = Null End If End Sub