繁体   English   中英

从Worksheet_Change函数中排除单元格范围

[英]Exclude Cell Range from Worksheet_Change function

我目前正在尝试建立一个电子表格,以便每次办公室中的任何人更改其中的任何信息时,我都能通过以下代码对其进行跟踪:-

Dim PreviousValue

 Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Value <> PreviousValue Then
    Sheets("log").Cells(65000, 1).End(xlUp).Offset(1, 0).Value = _
        Application.UserName & " changed cell " & Target.Address _
        & " from " & PreviousValue & " to " & Target.Value
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 PreviousValue = Target.Value
End Sub

它将所有更改记录到工作簿中的所有单元格。 但是我也有这段代码:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Sheets("MEP 01").Range("D5").Value = Date
 Sheets("MEP 01").Range("E5").Value = Time
End Sub

然后记录下最后一次保存文档的时间,我想知道是否有什么方法可以从审核代码中删除单元格D5和E5,因为这两个单元格以及D4(包含= TODAY()公式)将经常更改,这会使我的审计工作量很大。

非常感激任何的帮助。

在您的Workbook_BeforeSave中添加:

Application.EnableEvents = False

更改工作表之前, 但请务必添加

Application.EnableEvents = True

在结束Sub之前。

这样可以防止触发Worksheet_Change事件,因此不会将任何内容写入日志。

经过更多搜索后,我能够找到该查询的答案:-

要从Worksheet_Change函数中排除某些单元格,您要做的就是为有问题的单元格添加以下代码行:

 If Target.Address = "Cell number" Then Exit Sub

最终代码将如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$5" Then Exit Sub
If Target.Address = "$E$5" Then Exit Sub
''Excludes cells D5 and E5 from Worksheet_Change call''
If Target.Value <> PreviousValue Then
    Sheets("log").Cells(65000, 1).End(xlUp).Offset(1, 0).Value = _
        Application.UserName & " changed cell " & Target.Address _
        & " from " & PreviousValue & " to " & Target.Value
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PreviousValue = Target.Value
 End Sub

我敢肯定,这里的某人将能够使此代码看起来更整洁,尽管这样做确实符合我的要求。

您可以在情况下使用Intersect

 Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Value <> PreviousValue AND Intersect(Target, Range("D4,D5,E5")) Is Nothing Then
    Sheets("log").Cells(65000, 1).End(xlUp).Offset(1, 0).Value = _
        Application.UserName & " changed cell " & Target.Address _
        & " from " & PreviousValue & " to " & Target.Value
  End If

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM