删除多个单元格时不会发生 Excel 工作表更改事件

Posted

技术标签:

【中文标题】删除多个单元格时不会发生 Excel 工作表更改事件【英文标题】:Excel Worksheet Change Event Not Going when multiple cells deleted 【发布时间】:2017-05-25 20:33:20 【问题描述】:

我有代码可以触发更改事件,该事件将使用我的数据。该图表在 A-D 列中有信息。只要 D 列中的值发生更改,该代码就会触发要重新使用的数据。这在我输入新数据以及删除 D 列中的单元格内容时有效,但是,如果我选择某一行的 A-D 列中的信息,然后点击删除,则删除所有四个单元格的内容与数据在该行中,事件不会触发。我需要改变什么才能做到这一点?代码是

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
    Application.EnableEvents = False
Range(Cells(1, 1), Cells(90, 1)).Select
    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range(Cells(2, 1), Cells(90, 1)) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet2").Sort
        .SetRange Range(Cells(1, 1), Cells(90, 4))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("E4").Select
Application.EnableEvents = True
End If
End Sub

【问题讨论】:

【参考方案1】:

你使用过:If Target.Column = 4 Then 尝试使用:If Not Intersect(Target, Range("D:D")) Is Nothing Then

【讨论】:

@toepel30 问题似乎是未回答,请接受此问题作为答案,因为它解决了问题。

以上是关于删除多个单元格时不会发生 Excel 工作表更改事件的主要内容,如果未能解决你的问题,请参考以下文章

在非手动更改/编辑单元格时触发脚本 - 谷歌脚本

尝试使用 VBA 更改工作表中特定单元格的值失败

Excel:更改单元格时运行宏

从引用的单元格更改单元格时,如何突出显示该单元格?

将代码动态添加到新的 Excel 工作表

Excel选中单元格时自动高亮所在行列