【问题标题】:Worksheet Change event not working after pasting values粘贴值后工作表更改事件不起作用
【发布时间】:2012-06-14 02:13:41
【问题描述】:

我在Worksheet_Change有一个代码

如果第 9 列被更新,则第 8 列将通过乘以第 9 列和第 11 列自动填充。

但是当用户在列中粘贴值时,更改事件无法正常工作。只有 Col 8 中的第一个单元格被更新。

我该如何克服呢?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个

    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        On Error GoTo Whoa
        Application.EnableEvents = False
    
        If Target.Columns.Count > 1 Then GoTo LetsContinue
    
        If Not Intersect(Target, Columns(9)) Is Nothing Then
            Dim aCell As Range
    
            For Each aCell In Target
                aCell.Offset(, -1).Value = aCell.Value * aCell.Offset(, 2)
            Next
        End If
    
    LetsContinue:
        Application.EnableEvents = True
        Exit Sub
    Whoa:
        MsgBox Err.Description
        Resume LetsContinue
    End Sub
    

    【讨论】:

    • 但是在删除数据时会报错。 when selected the column8 to col 9 to clear the data the col 7 is populating with zeros.请改正。
    • 它们是否有可能,在插入行后,将计算列。如果我插入 10 行,我需要计算一些列,如第 10 列、第 12 列。请在这方面提供帮助
    • 复制整行粘贴到模板中,粘贴多行后需要对第10列和第12列进行计算。
    • 对 Col 10 使用 aCell.Offset(, 1),对 Col 12 使用 aCell.Offset(, 3),然后简单地更新你正在做的任何计算 :)
    • 粘贴整行后它不起作用。例如:我需要复制 10 行并将它们粘贴到模板中,它需要计算所有行的计算字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多