【问题标题】:Update cell, automatically copy row to a separate sheet更新单元格,自动将行复制到单独的工作表
【发布时间】:2016-11-18 21:38:45
【问题描述】:

我有一个包含两列(A 和 B)的工作表...第一列只是一个名称,第二列是一个数字。

如果我对 B 列中的数字进行编辑,我希望 Excel 自动将该整行复制到第二个工作表,以便创建我所做的编辑列表。

第二个工作表将是我对第一个工作表所做的更改的不断更新列表,最新更改(两个更新列的副本)添加到下一个未使用的行。

我希望一些 VBA 技巧可以实现这一点,但需要一些帮助才能实现。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在您有数据的工作表中尝试此操作(在 Excel 对象下),例如 Sheet1

    Option Explicit
    Dim PrevVal As Variant
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Column = 2 Then
    
        Application.ScreenUpdating = False
    
        Dim rng As Range
        Dim copyVal As String
    
        Set rng = Nothing
        Set rng = Range("A" & Target.Row & ":B" & Target.Row)
    
        'copy the values
        With Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp)
            .Offset(1, 0).Resize(1, rng.Cells.Count).Value = rng.Value
    
            With Worksheets("Sheet1")
                Range("A" & Target.Row).Copy
                copyVal = CStr(PrevVal)
            End With
    
            .Offset(1, 0).PasteSpecial xlPasteFormats
    
            .Offset(1, 1) = copyVal
            Application.CutCopyMode = False
    
        End With
    End If
    
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Rows.Count > 1 Then Exit Sub
    If Target.Columns.Count > 1 Then Exit Sub
    
    PrevVal = Target.Value
    End Sub
    

    【讨论】:

    • 谢谢,这几乎可以完美运行。我注意到的是,当它将行复制到第二张表时,它不是更新的行,而是更新之前的行。有可能实现吗?再次感谢您的帮助。
    • 所以您只想复制新条目而不是旧值或以前的值?
    • 我可以看到两者的用例,因此知道如何调整代码以便复制新条目而不是旧条目会很好。
    • 尝试删除copyVal = CStr(PrevVal).Offset(1, 1) = copyVal
    • 作为一个有趣的问题,这可以很容易地适应包括更多的列吗?更多床单?我试过玩弄它,但没有弄明白。
    【解决方案2】:

    根据上面的答案和 cmets,这里有一些额外的代码来检查行号。

    Dim row_num As Long
    row_num = Cells(Rows.Count, "B").End(xlUp).Row
    If row_num > 1 then row_num = row_num + 1 'Add 1 only when row number doesn't equal to 1, otherwise - 1.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多