具有多个选择的工作表更改事件

时间:2019-05-28 10:07:55

标签: excel vba

我有一张纸,上面记录着发生的更改,例如输入到单元格中的数据或删除的数据等。这很有用,除了发生多项选择时。

例如,如果我选择B2,D2和F2并删除了单元格的内容,则工作表更改事件将仅对第一个单元格B2进行更改。所以我不知道其他细胞发生了什么。

有没有办法解决这个问题,或者让它记录其他单元格的工作表更改,或者停止发生多个选择删除?

这是我的代码

other sections

2 个答案:

答案 0 :(得分:2)

您可以遍历每个已更改的单元格,而不是像这样遍历行和列。 “目标”是一个范围,如果在此过程中进行了更改,则可以指定为多个单元格。

Dim objCell As Range

For Each objCell in Target
    ' Do Something
Next

我可以看到您已经尝试做类似的事情,但是使用单元格方法应该为您提供每个已更改的地址。

  

但是请注意,大量更改可能会引起一些严重后果   一次点击带来的性能问题。

我希望有帮助。

答案 1 :(得分:0)

一些准则:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim cell As Range

    'Loop all selections
    For Each cell In Target

        With cell
            Debug.Print .Address
        End With

    Next cell

    'Exit sub when selection is more than one cell
    If Target.Count > 1 Then
        Exit Sub
    End If

End Sub