仅部分行复制到另一行 table

Only part of row copied to another table

所以我有一个工作簿,可以根据它的 ITEMNO 将一行复制到另一个 table 中的另一个 sheet。

但我的问题是我似乎无法复制整行。例如

工作表 1

它应该工作的方式是,一旦你 select 来自 select 列表的值,它应该将该行添加到下一个 [=] 的 table 的末尾32=] 如下所示

工作表 2

只添加了 ITEMNO。

有人可以告诉我以下 VBA 中缺少什么需要修复吗?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, i As Long, lRow As Long

If Not Intersect(Target, [SerialNumber]) Is Nothing Then
    i = Application.Match(Target, [Table1[ITEMNO]], 0)
    x = ActiveSheet.ListObjects(1).ListRows(i).Range
    With Sheet2
        If .[a2] = "" Then lRow = 2 Else lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lRow, 1) = Array(x(1, 1), x(1, 2), x(1, 5), x(1, 6), x(1, 8))
    End With
End If

End Sub

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x, lRow As Long

If Not Intersect(Target, [Table1[ITEMNO]]) Is Nothing Then
    x = ActiveSheet.ListObjects(1).ListRows(Target.Row - 2).Range
    With Sheet2
        If .[a2] = "" Then lRow = 2 Else lRow = Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lRow, 1) = _
        Array(Target, Target.Offset(, 1), Target.Offset(, 2), Target.Offset(, 3), Target.Offset(, 4), Target.Offset(, 5), Target.Offset(, 6), Target.Offset(, 7))
    End With
End If

End Sub

SerialNumber 是下拉列表中 selected 的内容。任何帮助将不胜感激

.Cells(lRow, 1) = Array(...)

您正在尝试分配一个数组,但只指定了第一个单元格。 (Cells 代表一个单元格。)

您需要跨列扩展范围:

.Range(.Cells(lRow, 1), .Cells(lRow, 11)) = Array(...)

不过,与其使用 幻数 11,不如存储和重用包含值 Range("K1").Column.

的变量

更好的方法是命名 table 并使用 Columns.Count 始终标识最后一列。