2016-11-18 80 views
0

我有一个包含两列(A和B)的工作表...第一个只是一个名称,第二个是数字。更新单元格,自动将行复制到单独的工作表

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

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

我希望有点VBA的诡计可能能够做到这一点,但需要一些帮助,使其发生。

回答

1

试试这个在表,你有数据(在Excel对象下),e.g工作表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 
+0

谢谢,这工作几乎完美。我注意到的是,当它将行复制到第二个工作表时,它不是更新的行,而是该行在更新之前的行。这有可能实现吗?再次感谢您的帮助。 – Andy

+0

所以你只是想要新的条目被复制,而不是旧的或以前的值? – Niclas

+0

我可以看到一个用例,因此知道如何修改代码以便新条目被复制而不是旧条目会很好。 – Andy

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. 
相关问题