VBA 工作表更改功能不起作用

VBA 工作表更改功能不起作用

我正在尝试使用 VBA 让一个单元格函数在每次用户更改特定单元格范围时更新

以下是我目前所掌握的信息:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Range
    Set R = Range("A6").EntireRow
    If Intersect(R, Target) Is Nothing Then Exit Sub
    Application.EnableEvents = False
        R.Cells(7, 4).Value = Date
    Application.EnableEvents = True
End Sub

这根本不起作用。我已经弄了好久了,但就是不能让它工作。

自动计算已开启。

宏已启用。

它不是一本共享的工作手册。

我将代码放入 Sheet1 而不是 Module1。

我究竟做错了什么?

答案1

对于遇到类似问题的人,Application.EnableEvents应明智地使用。我怀疑您的情况是您Application.EnableEvents = false在代码中设置了,然后在调试过程中停止了调试,或者抛出了错误。

当发生这种情况时,它会Application.EnableEvents一直false保持这种状态,直到您通过 VBA 启用它或重新启动 Excel。

防止这种情况的一种方法是使用On Error GoTo <Label>:并在代码末尾设置标签以重新打开事件,确保如果代码失败,则可以重新启用事件。

On Error GoTo Finally:

<code here>

Finally:
Application.EnableEvents = True

答案2

根据我的理解,当您更改范围“A6”时,您正在尝试将范围“D7”的数据更改为当前日期,对吗?

如果是,您可以通过将上面的所有代码替换为以下内容来进行此类更改:

Target.Offset(1, 3).Value = Date

其中 Offset 表示向下移动 1 行 3 列。

现在,如果您想更改“D”列中当前行的日期,请执行此操作。

Target.Offset(0, 3).Value = Date

请不要做任何事情:

Application.EnableEvents 

相关内容