VBA修改插入日期宏

时间:2018-10-31 04:30:37

标签: excel vba

我很喜欢这个脚本,我可以使用该脚本将日期自动插入到输入值的下一个单元格中,但是我希望它不更改已经存在的日期。

当我将完成工作的任何人的姓名缩写输入到T3:T5003范围的单元格中时,日期将自动插入到U3:U5003范围内的相邻单元格中。问题在于,以后可能需要更改或修改T3:T5003中的条目,但我不希望更改原始日期。因此,我只希望这种自动插入仅在相邻单元格中没有任何内容时才起作用。

这是我正在使用的代码:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
    If .Count > 1 Then Exit Sub
    If Not Intersect(Range("T3:T5003"), .Cells) Is Nothing Then
        Application.EnableEvents = False
            If IsEmpty(.Value) Then
                .Offset(0, 1).Activate
            Else
                With .Offset(0, 1)
                    .Value = Date
                End With
            End If
            Application.EnableEvents = True
        End If
    End With
End Sub

我尝试了其他没有在现有日期写的脚本,但是它们还有其他问题,我很难理解它们的工作原理,所以我希望我们可以修改我自己编写的脚本。正在使用。但我会采取一切可行的措施,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我认为您只需要进行IF检查,右边的单元格是否为空:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
    If .Count > 1 Then Exit Sub
    If Not Intersect(Range("A1:A100"), .Cells) Is Nothing Then
        Application.EnableEvents = False
            If IsEmpty(.Value) Then
                .Offset(0, 1).Activate
            Else
                If .Offset(0, 1).Value2 = "" Then
                    With .Offset(0, 1)
                        .Value = Date
                    End With
                End If
            End If
            Application.EnableEvents = True
        End If
    End With
End Sub

答案 1 :(得分:1)

这应该做

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    With Target
        If .Count > 1 Then Exit Sub
        If Not Intersect(Range("T3:T5003"), .Cells) Is Nothing Then
            If IsEmpty(.Offset(0, 1)) Then .Offset(0, 1).Value = Date
        End If
    End With
End Sub