我尝试从一个listobject剪切一行到另一个listobject:
'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
makro停在上面粘贴的代码的最后一行。它告诉我范围对象的粘贴操作失败。知道为什么会这样吗?我不认为它与listobjects有关,因为我似乎在尝试使用上面的代码剪切和粘贴其他行时遇到问题。
答案 0 :(得分:1)
由于您使用的是Cut
,请尝试Insert
而不是PasteSpecial
。这与您在使用Excel界面时看到的“插入剪切单元格”同义:
trgtWorkSheet.Cells(lPasteRow, lPasteColumn).Insert
另外 - 确保您粘贴/插入的单元格不在正在剪切的范围内。