Excel 宏未自动工作
当一列被修改时,我使用一个宏来写一个日期戳。其思想是,每当状态发生变化时,它都会给出该特定状态的运行时间。我有四个专栏:Excel 宏未自动工作,excel,vba,Excel,Vba,当一列被修改时,我使用一个宏来写一个日期戳。其思想是,每当状态发生变化时,它都会给出该特定状态的运行时间。我有四个专栏: 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
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
时,宏不会自动给我日期,但当我手动插入该列时,它就开始工作了。当您将值放入触发工作表\u 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。这样,您根本不必处理公式。我尝试过上述宏,但它给出了一个错误“next without for”,我如何在此处添加excel工作表,以便您可以查看that@Mani-我道歉。不知怎的,我错过了一个结局。我已经对上面的内容进行了修改。它现在工作得很好。问题是我想对其他状态使用相同的公式,就像我等待开始进行中的暂停关闭决赛选手prämiert leer在Umsetzung中,我应该在第一个“END IF”之后和单元格(rng.row)使用相同的公式吗使用我想在其中显示日期的desire列?@Mani-您必须使用扩展公式跟踪当前状态,或者只需在C列中输入一个新数字。您必须查看当前状态,以便知道将新时间戳放入哪个列。