可能是一个非常简单的代码,但似乎无法弄清为什么我的代码无法正常工作。
我有一个基于循环自动过滤的表。对于每个循环,我需要将过滤后的数据从一个表复制到新的工作表,但是如果删除行,则需要在数据复制之前清除目标表的内容。
我尝试以中断模式查看数据,但它根本不执行那些代码行。
我当前的代码有效,但是我希望它有用一点。
当前代码,将基于循环的过滤范围复制到工作表中与过滤器相同的第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
答案 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