自动在基于单元格的单元格中添加日期在另一个单元格中

时间:2017-11-01 15:06:29

标签: excel excel-vba excel-formula vba

我只需要在另一个单元格中“关闭”时将日期添加到单元格中。如果它还有其他内容我需要明确。

我正在使用只有两个选项“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

1 个答案:

答案 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

这属于工作表的代码表,不是标准模块。它应该存在多次删除,编辑和/或添加。

相关问题