Копировать активную строку из одной таблицы рабочих таблиц в другую

У меня есть лист 1 (отформатирован как таблица) и лист 2 (отформатирован как таблица). Я хочу скопировать активную строку из листа 1 в лист 2. Я пробовал это ниже и хорошо работает для нормального диапазона, но не для листов, отформатированных как таблица.

Private Sub CommandButton1_Click()
Dim lastrow As Long

With ThisWorkbook.Worksheets("Sheet2")
 lastrow = Application.Max(4, .Cells(.Rows.Count, "B").End(xlUp).Row + 1)
 .Range("B" & lastrow).Resize(, 5).Value = _
 Range("A" & ActiveCell.Row).Resize(, 5).Value
End With
End Sub
1 ответ

ОБНОВИТЬ:

Private Sub CommandButton1_Click()
 Dim tbl As ListObject
 Dim tblRow As ListRow
 Dim lastRow As Long

 If UCase(Range("F" & ActiveCell.Row)) <> "YES" Then Exit Sub

 With ThisWorkbook.Worksheets("Sheet3")
 'change Sheet3 to destination sheet - where you need to paste values

 If Not IsError(Application.Match(Range("B" & ActiveCell.Row), .Range("B:B"), 0)) Then Exit Sub

 Set tbl = .ListObjects(1)
 If tbl.Range(tbl.Range.Rows.Count, "B") = "" Then
 lastRow = Application.Min(tbl.Range(tbl.Range.Rows.Count, "B").End(xlUp).Row + 1, _
 Application.Max(4, .Cells(.Rows.Count, "B").End(xlUp).Row + 1))
 Else
 lastRow = tbl.ListRows.add.Range.Row
 End If

 End With
 tbl.Range(lastRow, "B").Resize(, 5).Value = _
 Range("A" & ActiveCell.Row).Resize(, 5).Value
End Sub

licensed under cc by-sa 3.0 with attribution.