我有一个 VBA 宏来验证用户输入的数据(我没有故意使用数据验证/条件格式)。
我正在使用 Worksheet_Change
事件来触发代码,我现在面临的问题是,当有行更改时。我不知道是否是删除/插入行。
有什么办法可以区分这两者吗?
最佳答案
您可以定义一个范围名称,例如
RowMarker =$A$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
关于vba - 确定用户是否正在添加或删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479721/