用vba复制和粘贴表格

MS Excel 2016 VBA

下面的代码工作得很好,除非表格被过滤。 任何想法如何解决这个问题,而不需要撤销过滤?

我需要每天复制新列,并将其粘贴到旧列,以便我们可以跟踪我们的日常进度。

我有额外的代码来取消,但我不喜欢这个主意。

build议

Sub Table_Move() Dim tbl As ListObject Dim N As String Dim O As String Call Clear N = "New" O = "Old" Set tbl = ActiveSheet.ListObjects("Table1") tbl.ListColumns(N).DataBodyRange.Copy tbl.ListColumns(O).DataBodyRange.PasteSpecial xlPasteValues End Sub 

 Sub Table_Move() Dim N As String Dim O As String Call Clear N = "New" O = "Old" Range("Table1[" & N & "]").Copy Range("Table1[" & O & "]").PasteSpecial xlPasteValues End Sub 

更新

只处理可见的单元格

 Sub Table_Move() Dim N As String Dim O As String Dim Rng As Range Dim rw As Range Call Clear N = "New" O = "Old" For Each rw In Range("Table1[" & N & "]").Cells If rw.EntireRow.Hidden = False Then If Rng Is Nothing Then Set Rng = rw Set Rng = Union(rw, Rng) End If Next rw Rng.Copy Range("Table1[" & O & "]").PasteSpecial xlPasteValues End Sub 

 Sub Table_Move() Dim N As String Dim O As String Call Clear N = "New" O = "Old" Range("Table1[" & N & "]").SpecialCells (xlCellTypeVisible).Copy Range("Table1[" & O & "]").PasteSpecial xlPasteValues End Sub 

即使filter打开,这段代码也会复制并粘贴数据范围内的每一行

 Sub Move() Dim rowcount As Integer, currentRow As Integer Dim sourceCol As Integer, TargetCol As Integer sourceCol = 14 ' Its N Column TargetCol = 15 ' Its O Column rowcount = Cells(Rows.Count, sourceCol).End(xlUp).Row 'counts the rows with data For currentRow = 1 To rowcount Range("O" & currentRow).Value = Range("N" & currentRow).Value 'Copy from N to O Next End Sub