将行复制到另一个电子表格上的下一个空闲行上进行更改

首先,对于macros和VBA,我是一个小菜鸟,所以请原谅我,如果我没有意义。

我有一个Excel电子表格,基本上是一个用户列表,他们的手机号码和一些其他位(目前使用AK列),并按行sorting。

我需要的是复制整行的方式,如果我改变一个单元格。 所以,如果我更改用户名,它将该用户的整个行复制到第二张纸上的下一个空白行。

这样做的目的是保持审计线索,让我们看看谁以前使用过一个号码等等。

我发现这一点: 复制行到Excel中的另一个工作表使用VBA这是按预期工作,但我不能为我的生活得到它,复制单元格到下一个空闲行,或B,不覆盖现有的条目。

这是我正在使用的代码:

Private Sub Worksheet_Change(ByVal Target As Range) Dim a As Range, rw As Range For Each a In Selection.Areas For Each rw In a.Rows If rw.Row >= 2 Then rw.EntireRow.Copy Sheet2.Cells(2 + (rw.Row - 2) * 3, 1) End If Next rw Next a End Sub 

我真的很感激,如果有人可以帮我定制它。

我在Win7上使用Excel 2010。

很多提前感谢。

通常, 相交方法用于确定接收更改的单元格是否涉及您所关注的一列或多列。 您可以添加其他参数; 在这种情况下,我有.Offset Worksheet.UsedRange属性向下一行,以确保行1不涉及。

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(1), Me.UsedRange.Offset(1, 0)) Is Nothing Then On Error GoTo bm_Safe_Exit Application.EnableEvents = False 'not really necessary in this case but never a bad idea within a Worksheet_Change Dim a As Range For Each a In Intersect(Target, Columns(1), Me.UsedRange.Offset(1, 0)) If CBool(Len(a.Value2)) Then _ a.EntireRow.Copy _ Destination:=Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 'not really sure this is the correct destination Next a End If bm_Safe_Exit: Application.EnableEvents = True End Sub 

我已经包含一个调用来禁用Worksheet_Change事件macros的持续时间的事件处理。 虽然这是Worksheet_Change修改值时的一个关键步骤,但这里并入并不重要。 但是,它不会造成危害,并且在您想要扩充Worksheet_Change以包含可能会更改工作表上的值的时间戳之类的情况下已经到位。