vba - 确定用户是否正在添加或删除行

标签 vba excel

我有一个 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/

相关文章:

excel - 在 Excel 中根据条目创建自动日期戳

excel - 为单元格创建变量 (VBA)

VBA 应用程序崩溃且没有错误消息 - 单步执行程序时有效

excel - 改进循环以更快地删除 excel 中的行

.net - MS Access 驱动程序问题

excel - 如何自动过滤具有来自特定范围的值的列

excel - 获取脚本中声明的 'Filename'

excel - 将 Excel 连接到 Analysis Services 服务器时遇到问题

c# - foreach 中的 Excel Interop CustomDocumentProperties 导致挂起

java - 如何使用 apache poi 4.0.1 和 java 生成可编辑的堆叠条形图?