2014-11-21 62 views
0

我尝试从一个的ListObject切一行到另一个的ListObject:上面粘贴代码的最后一行VBA PasteSpecial操作失败?

'Create new row 
Dim lNewRowNumber As Long 
lNewRowNumber = loTrgt.DataBodyRange.Row + loTrgt.ListRows.Count 
trgtWorkSheet.Rows(lNewRowNumber).EntireRow.Insert 

'Cut old row 
Dim lCutRow As Long 
Dim lCutStartColumn As Long 
Dim lCutEndColumn As Long 
lCutRow = t.Row 
lCutStartColumn = loSrc.Range.Column 
lCutEndColumn = loSrc.Range.Column + loSrc.ListColumns.Count - 1 

'Paste row 
Dim lPasteRow As Long 
Dim lPasteColumn As Long 
lPasteRow = lNewRowNumber 
lPasteColumn = loTrgt.Range.Column 

t.Worksheet.Range(t.Worksheet.Cells(lCutRow, lCutStartColumn), t.Worksheet.Cells(lCutRow, lCutEndColumn)).Cut 
trgtWorkSheet.Cells(lPasteRow, lPasteColumn).PasteSpecial xlPasteAll 

的万客隆停止。它告诉我范围对象的粘贴操作失败。任何想法,为什么这可能是?我不认为它与列表对象有关,因为在使用上面的代码尝试剪切和粘贴其他行时,我似乎遇到了问题。

回答

1

由于您使用的是Cut,请尝试Insert而不是PasteSpecial。这是“插入剪切单元格”,你看,当你使用的是Excel界面的代名词:

trgtWorkSheet.Cells(lPasteRow, lPasteColumn).Insert 

而且 - 确保您粘贴单元格/插入的不是在被切割的范围内。