我正在为我的公司制作工作簿。
想要将宏从一个工作表的行(单元格到C到G)中的几个单元格复制到另一个工作表行(单元格A,B,C,F,G)。
问题是,只有在D栏输入数据时才需要转移它们。
我无法正确使用Alex P为类似问题编写的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nextRow As Long
If Not Intersect(Target, Range("D:D")) Is Nothing Then
If VBA.IsDate(Target) Then
With Worksheets("Sheet2")
nextRow = IIf(VBA.IsEmpty(.Range("A1048576").End(xlUp)), 1, .Range("A1048576").End(xlUp).Row + 1)
.Range("A" & nextRow) = Target.Offset(0, -3)
.Range("B" & nextRow) = Target.Offset(0, -1)
.Range("C" & nextRow) = Target
End With
End If
End If
End Sub
答案 0 :(得分:0)
试试这个。我得到了这个工作表:
工作表Sheet
表2
应用以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nextRow As Long
If Not Intersect(Target, Range("D:D")) Is Nothing Then
If Not VBA.IsEmpty(Target) Or VBA.IsNull(Target) Then
With Worksheets("Sheet2")
nextRow = IIf(VBA.IsEmpty(.Range("B1048576").End(xlUp)), 1, .Range("B1048576").End(xlUp).Row + 1)
.Range("A" & nextRow) = Target.Offset(0, -1)
.Range("B" & nextRow) = Target
.Range("C" & nextRow) = Target.Offset(0, 1)
.Range("F" & nextRow) = Target.Offset(0, 2)
.Range("G" & nextRow) = Target.Offset(0, 3)
End With
End If
End If
End Sub
尝试在表1中输入新行
表2的结果
你需要注意的是:确保第1页的D列是最后输入的项目,如果先输入,则会复制空行。