我正在尝试创建一个宏来给出状态更改的时间戳,但遗憾的是到目前为止我还没有成功。在这方面有人可以帮助我。 下面提到的是我项目中的状态。 空地 等待开始 不断的 等候接听 关闭 finalisiert prämiert 阅读 在Umsetzung
提取日期的主要原因是计算特定状态的天数。
提前致谢
编辑更新的问题以包含代码:
If Not Intersect(Target, Columns(1)) Is Nothing Then
On Error GoTo Fìn
Application.EnableEvents = True
Dim rng As Range
For Each rng In Intersect(Target, Columns(1))
If LCase(rng.Value) = "clearing" Then
Cells(rng.Row, 2) = Date
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 = "true" Then
Cells(rng.Row, 4) = Date
Cells(rng.Row, 4).NumberFormat = "dd.mm.yyyy"
Else
If LCase(rng.Value) = "wait for start" Then
Cells(rng.Row, 6) = Date
Cells(rng.Row, 6).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, 8) = Date
Cells(rng.Row, 8).NumberFormat = "dd.mm.yyyy"
End If
End If
Next rng
End If
Fìn:
Application.EnableEvents = True
End Sub
我有上面提到的代码,但实际上并没有满足我的要求。状态更改意味着:我的项目中有近6个状态,例如,当我将状态从等待开始更改为正在进行时,它应该返回状态等待开始日期和结束日期的开始日期,以便我可以计算天数。
答案 0 :(得分:0)
这对你有用,不那么混乱......
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
If LCase(Target) = "clearing" Then Target.Offset(, 1) = Format(Date, "dd.mm.yy")
If LCase(Target) = "true" Then Target.Offset(, 1) = Format(Date, "dd.mm.yy")
'==========2 conditions==============
If LCase(Target) = "something" And LCase(Target.Offset(0, 1)) = "maybe" Then
MsgBox "Example with 2 conditions"
Target.Offset(0, 4) = Format(Date, "dd.mm.yy")
End If
End Sub