首页 > 解决方案 > EXCEL : 循环引用问题

问题描述

我想检查当前单元格的值是否为空,然后生成一个随机数,否则保持原样。

=IF(P4<>0,RANDBETWEEN(1,100),P4)

但是当我打开工作表时,我遇到了循环引用的问题,即使旧值不为空,P4 的值也在变化

标签: excel

解决方案


将此代码放在工作表的私有代码表中(右键单击工作表选项卡,查看代码)。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If not intersect(Target, Range("P4")) Is Nothing Then
        On Error GoTo safe_exit
        Application.EnableEvents = False
        If Range("P4") = vbNullString Then
            Range("P4") = Application.RandBetween(1, 100)
        End If
    End If
safe_exit:
    Application.EnableEvents = True
End Sub

推荐阅读