修改列时,我正在使用宏编写日期戳。这个想法是,只要状态改变,它就会给出该特定状态的运行时间。我有四列:
A b c d
clearing 24.04.2015 1 empty
**when stauts is changed**
A b c d
wait for start 24.04.2015 2 24.04.2015
c的正式形式是:
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列更改为2
宏时,它不会自动为我提供日期,但是当我手动插入该列时,它就会起作用。
当您将值放入触发Worksheet_Change
事件宏的工作表中时,应始终关闭事件,否则宏将尝试在自身之上运行。
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。这样,您根本不必处理公式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句