从宏中排除第一行

Han*_*gio 4 excel vba

我有一个宏,可以在编辑任何行时将当前时间放入一个单元格中。我的问题是这个宏也为标题的第 1 行执行。所以它最终将列的标题更改为时间。

宏工作正常,但仍会更改标题。我尝试了以下方法:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    If ActiveCell.Row = 1 Then Exit Sub

    Cells(Target.Row, "I").Value = Now
    Application.EnableEvents = True

End Sub
Run Code Online (Sandbox Code Playgroud)

Don*_*ett 5

编辑后 ActiveCell 可以更改为其他内容,因此请使用目标范围而不是 ActiveCell。例如,如果我点击 {enter} 来完成我的编辑,则 ActiveCell 现在位于第 2 行而不是第 1 行。

Private Sub Worksheet_Change(ByVal Target As Range) 
    Application.EnableEvents = False

    With Target
        If .Row > 1 Then 
            Cells(.Row, "I").Value = Now 
        End If
    End With

    Application.EnableEvents = True

End Sub
Run Code Online (Sandbox Code Playgroud)

我正在使用 With 语法来显示您正在比较的同一行是您正在编辑的行。如果您愿意,您仍然可以将它们放在不同的行中。

此外,用户 Jeeped 对 Application.EnableEvents = True 行提出了很好的观点。如果行为 1,它不会运行,因此它们会无限期地关闭。最好测试 > 1 并仅在该条件下运行更新代码。