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列中输入一个新数字。您必须查看当前状态,以便知道将新时间戳放入哪个列。