如何删除Excel中带保护列和VBA自动填充列的行

如何删除Excel中带保护列和VBA自动填充列的行,excel,vba,Excel,Vba,我需要Excel电子表格的帮助。以下是我需要做的事情 需要保护4根柱子。1将包含输入该行的用户。1将包含创建行的日期。1将包含上次更新该行的用户。1将包含行更新的最后日期 为此,我已经有了一个简单但有效的代码 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 Then Exit Sub Application.EnableEvents = False Cells(Target.Row, "AD"

我需要Excel电子表格的帮助。以下是我需要做的事情

需要保护4根柱子。1将包含输入该行的用户。1将包含创建行的日期。1将包含上次更新该行的用户。1将包含行更新的最后日期

为此,我已经有了一个简单但有效的代码

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Row = 1 Then Exit Sub
  Application.EnableEvents = False
  Cells(Target.Row, "AD").Value = Environ$("UserName")
  Cells(Target.Row, "AE").Value = Date      
  If IsEmpty(Cells(Target.Row, "AG")) Then
      Cells(Target.Row, "AG").Value = Environ$("UserName")
      Cells(Target.Row, "AF").Value = Date
  End If      
  Application.EnableEvents = True
End Sub
现在的问题是删除一行。我在谷歌搜索时发现了一个VBA代码,但当它删除行时,上面的代码将执行,并用数据填充4列

谁能给我看一个处理删除的代码吗

谢谢


Rick.

就像Josh在评论中提到的那样,布尔值可以工作。但是,您可能应该使用内置事件“拦截器”

删除行之前,请禁用事件以确保未触发工作表更改。完成所有更改后,再次启用事件

Application.EnableEvents = False
'Delete stuff
Application.EnableEvents = True

为什么不能只设置一个全局布尔值,或者只有在行删除代码运行时才为真,然后在布尔值为假时才运行工作表\u更改代码?好的,听起来不错。我会试试看。我只是跳进Excel中的VBA,很长时间没有使用它了。我得再熟悉一次。谢谢嗨,乔希。我尝试了全局变量标志,它成功了。但是,将EnableEvents设置为true/false似乎是正确的方法。我当前正在使用工作表\u SelectionChange事件来保护/取消保护工作表。这允许删除一行。您知道在具有保护列的工作表上允许删除的更好方法是保护列吗?在工作表中,是否使用密码防止某些更改?如果是这种情况,您需要取消对工作表的保护,进行更改,然后再次进行保护。ThisWorkbook.Sheets(“SheetName”)。取消“密码”保护’删除ThisWorkbook.Sheets(“SheetName”)。保护“密码”