更改值时,从工作表1复制到工作表2

时间:2016-07-29 01:54:35

标签: excel vba excel-vba range copy-paste

所以,我正在运行一个宏,它会在预先形成搜索后对网页进行报废。它输出结果,清除它们,然后用另一个运行搜索。

我试图复制输出到不同工作表的部分文本。没有丢失任何数据。

我目前的代码" recopies"每次输入新行条目时每列。我只希望它复制到有边框的单元格中。

enter image description here

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Columns("D:P")) Is Nothing Then Exit Sub
    Range("D" & Target.Row).Copy Sheets("Sheet3").Range("A" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("E" & Target.Row).Copy Sheets("Sheet3").Range("B" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("F" & Target.Row).Copy Sheets("Sheet3").Range("C" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("G" & Target.Row).Copy Sheets("Sheet3").Range("D" & Rows.COUNT).End(xlUp).Offset(1, 0) '
    Range("H" & Target.Row).Copy Sheets("Sheet3").Range("E" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("I" & Target.Row).Copy Sheets("Sheet3").Range("F" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("J" & Target.Row).Copy Sheets("Sheet3").Range("G" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("K" & Target.Row).Copy Sheets("Sheet3").Range("H" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("L" & Target.Row).Copy Sheets("Sheet3").Range("I" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("M" & Target.Row).Copy Sheets("Sheet3").Range("J" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("N" & Target.Row).Copy Sheets("Sheet3").Range("K" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("O" & Target.Row).Copy Sheets("Sheet3").Range("L" & Rows.COUNT).End(xlUp).Offset(1, 0)
    Range("P" & Target.Row).Copy Sheets("Sheet3").Range("M" & Rows.COUNT).End(xlUp).Offset(1, 0)
End Sub

1 个答案:

答案 0 :(得分:1)

无法知道带有边框的"单元格在哪里?从您的屏幕截图开始/结束,因为我们无法看到行/列标签。但听起来你似乎想修改你的Intersect声明以说明具体范围。

现在,Intersect(Target, Columns("D:P"))表示任何Target单元格,它位于D列到P列,无论行

您需要的是:

Intersect(Target, Range("D10:P1000")) 

哪个会进行微调,以便_Change事件只处理在指定Range("D10:P1000")内更改的单元格。

您还可以使用.Copy方法使用 .Resize语句:

Private Sub Worksheet_Change(ByVal Target As Range)
    ''## Modify the RANGE argument as needed 
    If Intersect(Target, Range("D10:P1000")) Is Nothing Then Exit Sub

    Range("D" & Target.Row).Resize(1,13).Copy Sheets("Sheet3").Range("A" & Rows.COUNT).End(xlUp).Offset(1, 0)
End Sub

此处,.Resize方法显示*取范围Range("D" & Target.Row)并使其宽13列,其中包含Target.Row中的列D至P.