Excel VBA,工作表中的代码不工作

我在sheet1中有下面的代码(注意 – 这个代码位于wroksheet对象中,而不是工作簿对象或模块):

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放在一个单独的模块中,然后从工作表中的代码中调用该函数,但也陷入了无限循环。

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

 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 

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

 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