我只需要在另一个单元格中“关闭”时将日期添加到单元格中。如果它还有其他内容我需要明确。
我正在使用只有两个选项“Open”& amp; “关闭”。当我选择“已关闭”时,我希望右边的单元格插入当前日期。
我发现一些VBA代码可以让我添加日期,无论单元格中的代码是什么,但我无法弄明白。
我还发现了以下工作,但我必须将它放在一列中的每个单元格中。
=IF(AND(F2<>"",F2<>"Open"),TODAY(),"")
无论单元格中的数据是什么,这都是添加日期的代码
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim xRg As Range, xCell As Range
On Error Resume Next
If (Target.Count = 1) Then
If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
Target.Offset(0, 1) = Date
Application.EnableEvents = False
Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
If (Not xRg Is Nothing) Then
For Each xCell In xRg
xCell.Offset(0, -1) = Date
Next
End If
Application.EnableEvents = True
End If
End Sub
答案 0 :(得分:1)
这是一个相当模板化的Worksheet_Change,它将永久地放入日期。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F:F")) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim rw As Long, rng As Range
For Each rng In Intersect(Target, Range("F:F"))
Select Case LCase(rng.Value2)
Case "closed"
rng.Offset(0, 1) = Date
'optional date formatting
'rng.Offset(0, 1).numberformat = "dd-mmm-yyyy"
Case Else
rng.Offset(0, 1).ClearContents
End Select
Next rng
End If
bm_Safe_Exit:
If CBool(Val(Err.Number)) Then _
Debug.Print Err.Number & ": " & Err.Description
Application.EnableEvents = True
End Sub
这属于工作表的代码表,不是标准模块。它应该存在多次删除,编辑和/或添加。