上次修改后的跟踪的基本IF声明错误

我是一个新手编码器最近摆脱了基于networking的编码,并与我的脚本有一个错误。 我已经可以看出这是不好的脚本,并想知道我是否可以得到任何帮助。

这个脚本只是简单的假设当前时间和date的等效偏移单元格在该范围内的任何单元格被更改后。 我相信我的可怜的脚本是或者导致一个循环或计算错误的信息,事件发生后,excel崩溃。

任何帮助将不胜感激。

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E5:E100")) Is Nothing Then Target.Offset(0, 3) = Now() Target.Offset(0, -1) = Target.Offset(0, -1).Value + 1 Else If Intersect(Target, Range("F5:F100")) Is Nothing Then Exit Sub Target.Offset(0, 2) = Now() Target.Offset(0, -1) = Target.Offset(0, -1).Value + 1 End If End Sub 

使用If Intersect(Target, Range("E5:E100")) Is Nothing因为标准是检查目标与你的范围相交。 我将假设,根据您使用的偏移量,您只对E和F列感兴趣。

 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False 'prevent event re-firing based on changes made by the event If Not (Intersect(Target, Range("E5:F100")) Is Nothing) Then Target.Offset(0, (7 - Target.Column)) = Now() Target.Offset(0, -(Target.Column - 4)) = Target.Offset(0, -(Target.Column - 4)).Value + 1 End If Application.EnableEvents = True 'allows event to fire again End Sub 

因此,为了澄清,上面查找列E或F(第5至100行)的变化,如果有一个写date标记到列G中的同一行,并计数器列D.

您需要暂时停止事件的发生,因为您正在更改表单上的值,然后再次触发事件,并继续循环,直到出现excel崩溃。

 Application.EnableEvents = False 

在开始,并确保添加

 Application.EnableEvents = True 

最后把他们打开。

所以:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E5:E100")) Is Nothing Then Application.EnableEvents = False Target.Offset(0, 3) = Now() Target.Offset(0, -1) = Target.Offset(0, -1).Value + 1 Application.EnableEvents = True Else If Not Intersect(Target, Range("F5:F100")) Is Nothing Then Application.EnableEvents = False Target.Offset(0, 2) = Now() Target.Offset(0, -1) = Target.Offset(0, -1).Value + 1 Application.EnableEvents = True End If End Sub