首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VBA Excel中插入和删除行触发事件

在VBA Excel中插入和删除行触发事件
EN

Stack Overflow用户
提问于 2021-10-16 11:54:23
回答 1查看 51关注 0票数 0

在删除和插入行时,我使用下面的代码触发某些事件,这段代码的好处是,它区分了插入行和已删除行,从而为每种情况触发事件,唯一的限制是,如果您对工作簿的第一个更改是行的添加或删除,则不起作用,但是在第一次更改之后,它可以正常工作。有人知道怎么解决这个问题吗?有人在代码之前建议了一个Worksheet_Activate事件,但我太缺乏经验了,弄不清楚.

首先,我们定义了一个范围名称(RowMarker =$1000)

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-10-16 14:42:19

添加工作簿事件

代码语言:javascript
运行
复制
Private Sub Workbook_Open()
    Sheet1.lrow = Sheet1.Range("RowMarker").Row
End Sub

工作表事件

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69595342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档