Excel 将数据从一个表复制到另一个表,但在复制前清除数据

Excel 将数据从一个表复制到另一个表,但在复制前清除数据,excel,vba,Excel,Vba,可能是一个非常简单的问题,但似乎无法解释为什么我的代码不起作用 我有一个基于循环自动筛选的表。对于每个循环,我需要将过滤后的数据从一个表复制到一个新的工作表中,但是如果删除了行,我希望在数据复制之前清除目标表的内容 我尝试过在中断模式下查看数据,但它根本不执行这些代码行 我当前的代码可以工作,但我希望它更有用一点 当前代码,将基于循环的过滤范围复制到与过滤器名称相同的工作表中的第20行: 但是,我现在想通过在复制之前清除目标数据表来改进它,现在不指定必须将数据复制到第20行,而只是数据的第一行

可能是一个非常简单的问题,但似乎无法解释为什么我的代码不起作用

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

我尝试过在中断模式下查看数据,但它根本不执行这些代码行

我当前的代码可以工作,但我希望它更有用一点

当前代码,将基于循环的过滤范围复制到与过滤器名称相同的工作表中的第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
破译代码:

 On Error Resume Next

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

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

'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

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

'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

请分享您迄今为止所做的尝试。您不需要在下一步错误恢复时使用
,即可使代码正常工作。注释掉这些行,看看它是否抛出了一个错误,我已经把它去掉了,代码在这些行中移动,但实际上没有执行任何操作。这是一个更大的代码的一部分,我不确定其中是否有停止执行的东西。我可以发布完整的代码,但上一次检查时,它运行到了几个word页面,并且可能没有考虑到我是vba新手而应该做的那么精简。我已经修复了代码的第一部分,以清除目标表中的现有数据,方法是将其替换为:
Sheets(Company_Name)。ListObjects(1)。Clearcontents
为Sheets>(公司名称).ListObjects(1).DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.count-1.DataBodyRange.Columns.count).Rows.Delete.DataBodyRange.ClearContents以
结尾。但我现在一直在将数据复制到目标表的第一行,因为我不知道如何引用它,因为它在每个表或表上都不是同一行,尽管列仍然是您迄今为止尝试过的相同共享。您不应该需要<代码>出错后继续下一步以使代码正常工作。注释掉那些行,看看它是否在我取出的任何地方抛出错误,代码在这些行中移动,但实际上没有执行任何操作。这是一个更大代码的一部分,我不确定其中是否有停止执行的内容。我可以ost完整的代码,但上一次我检查时,它运行到了几个word页面,并且可能没有我是vba新手时应有的那么精简。我已经修复了代码的第一部分,以清除目标表中的现有数据,方法是:替换为:
Sheets(Company_Name)。ListObjects(1)。Clearcontents
为swith Sheets(公司名称).ListObjects(1).DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.count-1.DataBodyRange.Columns.count).Rows.Delete.DataBodyRange.ClearContents以
结尾。但我现在一直在将数据复制到目标表的第一行,因为我不知道如何引用它,因为它在每个表或表上都不是同一行,尽管列保持不变