首先,我从未使用过VBA(或VB),所以请记住这一点。我试图将一行复制到我的工作簿中的另一个工作表。因此,只要第1行中的任何更改发生在sheet1中,该行应该在sheet2的第2行中复制。如果在sheet1中修改了第3行,则应在sheet2上修改第5行。我希望sheet2上每行之间有一个空行。我将尝试使用VBA创建一个新表来放置在这个空行中。无论如何,我的Selection.Paste线上出现错误。我对VBA的知识非常有限(一小时值得),所以我可以完全放弃我想做的事情。
Private Sub Worksheet_Change(ByVal Target As Range)
'Do not worry about column headers
If Target.Row = 1 Then Exit Sub
'On Error GoTo ErrHandler
Application.EnableEvents = False 'This might be necessary?
Sheet1.Rows(Target.Row).Select
Selection.Copy
Sheet1.Rows(Target.Row).Copy
If Target.Row = 2 Then
Sheet2.Rows(Target.Row).Select
Selection.Paste
Else
Sheet2.Select
Sheet2.Rows(Target.Row + Target.Row - 1).Select
Selection.Paste
End If
ErrHandler:
Application.EnableEvents = True 'This might be necessary?
End Sub
修改:将Selection.Paste
更改为ActiveSheet.Paste
后,它现在正在运作。
答案 0 :(得分:2)
编辑:增加处理多区域选择
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