更新单元格,自动将行复制到单独的工作表

时间:2016-11-18 21:38:45

标签: excel vba excel-vba

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

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

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

我希望VBA的一些技巧可能会让这种情况发生,但需要一些帮助才能实现。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

根据上述答案和评论,以下是一些检查行号的附加代码。

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.