已解决-将数据从1个表复制到另一个表,但在复制之前清除数据

时间:2019-06-28 09:49:43

标签: excel vba

可能是一个非常简单的代码,但似乎无法弄清为什么我的代码无法正常工作。

我有一个基于循环自动过滤的表。对于每个循环,我需要将过滤后的数据从一个表复制到新的工作表,但是如果删除行,则需要在数据复制之前清除目标表的内容。

我尝试以中断模式查看数据,但它根本不执行那些代码行。

我当前的代码有效,但是我希望它有用一点。

当前代码,将基于循环的过滤范围复制到工作表中与过滤器相同的第20行:

但是我现在想通过在复制之前清除目标数据表来改善它,而不是指定必须将数据复制到目标表的第一行(变量名),而不是专门复制到第20行。

但是我的新代码只是不执行粘贴行,只是跳过它而不会引发错误。

我觉得我已经接近了,但是无法理解!任何帮助将不胜感激。

工作代码:

 On Error Resume Next

      With Sourcetable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
        With Sheets(Company_Name)

        On Error Resume Next
          .Rows(20).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone
         Application.CutCopyMode = False
       End With
    End With

破损代码:

  Sheets(Company_Name).Listobjects(1).ClearContents

      With Sourcetable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
        With Sheets(Company_Name)

        On Error Resume Next
          .ListObjects(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone
         Application.CutCopyMode = False
       End With
    End With

1 个答案:

答案 0 :(得分:0)

终于解决了,我知道我已经接近了:

'Clear Existing Data in target table only and resize table to 1 row (excluding header row)

With Sheets(Company_Name).ListObjects(1)
    .DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.count - 1, .DataBodyRange.Columns.count).Rows.Delete
    .DataBodyRange.ClearContents
End With

'Define last row of Target Table (which will be first as all data cleared in previous step)

lrow = Sheets(Company_Name).Range("B" & Rows.count).End(xlUp).Row

'Copy visible data from source table to first row of target table      
With Sourcetable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
    With Sheets(Company_Name)
        .Range("A" & lrow).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone
         Application.CutCopyMode = False
    End With
End With