macros不能自动工作

我正在使用一个macros来修改列时写一个date戳。 这个想法是,只要状态发生变化,就会给出特定状态的运行时间。 我有四列:

A bcd clearing 24.04.2015 1 empty **when stauts is changed** A bcd wait for start 24.04.2015 2 24.04.2015 

c的forms是:

 IF(RC[-2]="";"";IF(RC[-2]="clearing";1;2)) Macro; Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Value = "clearing" Then Cells(Target.Row, 2) = Date Else If Target.Column = 3 And Target.Value = 2 Then Cells(Target.Row, 4) = Date End If End If End Sub 

问题是,当C列,在公式的帮助下,改为2macros不会自动给我的date,但是当我手动插入它的工作。

当您将值放入触发Worksheet_Change事件macros的Worksheet_Change中时,应始终closures事件,否则macros将尝试在其本身之上运行。

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(1)) Is Nothing Then On Error GoTo Fìn Application.EnableEvents = False Dim rng As Range For Each rng In Intersect(Target, Columns(1)) If LCase(rng.Value) = "clearing" Then Cells(rng.Row, 2) = Now Cells(rng.Row, 2).NumberFormat = "dd.mm.yyyy" 'Cells(rng.Row, 3).FormulaR1C1 = "maybe put the formula in here" ElseIf rng.Offset(0, 2).Value = 2 Then Cells(rng.Row, 4) = Now Cells(rng.Row, 4).NumberFormat = "dd.mm.yyyy" End If Next rng End If Fìn: Application.EnableEvents = True End Sub 

这听起来像你已经在C列中有这个公式,但我留下了一个地方,你可以把它放在列A获得清除价值。 另一种方法是简单地在列C中写入1,然后在列C中写入2。这样就不必处理公式了。