仅部分行复制到另一行 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
始终标识最后一列。
所以我有一个工作簿,可以根据它的 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
始终标识最后一列。