在删除和插入行时,我使用下面的代码触发某些事件,这段代码的好处是,它区分了插入行和已删除行,从而为每种情况触发事件,唯一的限制是,如果您对工作簿的第一个更改是行的添加或删除,则不起作用,但是在第一次更改之后,它可以正常工作。有人知道怎么解决这个问题吗?有人在代码之前建议了一个Worksheet_Activate事件,但我太缺乏经验了,弄不清楚.
首先,我们定义了一个范围名称(RowMarker =$1000)
Private Sub Worksheet_Change(ByVal Target As Range)
Static lngRow As Long
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("RowMarker").RefersToRange
If lngRow = 0 Then
lngRow = rng1.Row
Exit Sub
End If
If rng1.Row = lngRow Then Exit Sub
If rng1.Row < lngRow Then
MsgBox lngRow - rng1.Row & " rows removed"
Else
MsgBox rng1.Row - lngRow & " rows added"
End If
lngRow = rng1.Row
End Sub
发布于 2021-10-16 14:42:19
添加工作簿事件
Private Sub Workbook_Open()
Sheet1.lrow = Sheet1.Range("RowMarker").Row
End Sub
工作表事件
Public lrow As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n as Long
n = Me.Range("RowMarker").Row - lrow
lrow = Me.Range("RowMarker").Row
If n > 0 Then
MsgBox n & " rows inserted"
ElseIf n < 0 Then
MsgBox n & " rows removed"
End If
End Sub
https://stackoverflow.com/questions/69595342
复制相似问题