3

我在 sheet1 中有以下代码(注意 - 此代码在 woksheet 对象中,而不是工作簿对象或模块中):

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Integer
r = ActiveCell.Row
Cells(r - 1, 7).Value = Now()
ActiveWorkbook.save
End Sub

有人可以告诉我为什么: 1. ActiveWorkbook.save 在上面不起作用 - 它会陷入无限循环;2. 为什么我不能按 F8 单步执行代码

我试图将 ActiveWorkbook.save 放在一个单独的模块中,然后从工作表中的代码中调用该函数,但这也陷入了无限循环。

4

2 回答 2

3

您需要禁用事件以避免无限循环

Private Sub Worksheet_Change(ByVal Target As Range)
application.enableevents=false
    Cells(target.row - 1, 7).Value = Now()
application.enableevents=true

ActiveWorkbook.save
End Sub
于 2012-12-14T17:20:59.203 回答
1

导致无限循环是因为当您使用当前日期更新单元格时,这会导致工作表更改事件再次调用事件代码。您需要禁用事件,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Integer
r = ActiveCell.Row

Application.EnableEvents = False    
Cells(r - 1, 7).Value = Now()    
Application.EnableEvents = True    
ActiveWorkbook.Save

End Sub
于 2012-12-14T17:23:01.193 回答