VBA定义范围和静态日期戳

时间:2016-01-11 14:26:35

标签: excel vba excel-vba

我需要一些关于此代码的帮助,因为它无法正常工作。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cell As Range
    For Each Cell In Target
    With Cell
    If .Column = Range("W:W").Column Then
    Cells(.Row, "AC").Value = Int(Now)
    End If
    End With
    Next Cell
End Sub

每次填写“W”列中的单元格时,我都想在“AC”列中获取自动静态日期戳,我想从行“19”开始。 试图使用

If .Column = Range("W19").End(xldown) Then

但它不起作用。

我刚刚开始使用macro和vba,如果你可以向我解释任何解决方案,它会对我有所帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您要写入工作表,请务必关闭事件,以便Worksheet_Change事件宏不会尝试在其自身上运行。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("W:W")) Is Nothing Then
        On Error GoTo bm_Safe_Exit
        Application.EnableEvents = False
        Dim rng As Range
        For Each rng In Intersect(Target, Columns("W:W"))
            If rng.Row > 18 Then _
                rng.Offset(0, 6) = Date 'or Now for datetime
        Next rng
    End If
bm_Safe_Exit:
    Application.EnableEvents = True
End Sub

这应该处理对列W的多次更改,就像块范围粘贴一样。