【发布时间】:2018-02-09 22:55:30
【问题描述】:
我正在尝试将列从一张纸复制到另一张纸。为了避免“选择”,我编写了类似 worksheet.range.copy 的代码。出于某种原因,下面的代码给了我错误。如果我将 Range("A2").End(xlDown) 替换为“A100”,那么代码将起作用。
Sub CopyData()
MTDData.Range("A2", Range("A2").End(xlDown)).Copy
MTDFormula.Range("H2").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End Sub
任何建议为什么上面的代码会出错,是否有更有效的方法可以将大量数据从一张纸复制并粘贴到另一张纸上。
【问题讨论】:
-
行数太容易搞砸了。有关检查空单元格或奇异值的可重用函数,请参阅我的答案。在您的情况下,您的代码中的错字已用
MTDData.Range("A2", MTDData.Range("A2").End(xlDown)).Copy修复 -
知道了。你能告诉我下面的代码有什么问题吗 MTDData.Range(Cells(2, 10), Cells(CellsCount, 10)).Copy
-
Cells()假定为ActiveWorksheet。我建议仅在Range()对象之后使用.Cells()。就像MTData.Range("A2").Cells(2,10)一样,它从A2开始获得第二行和第10 列。要获取多个单元格(如整个列或整个表格),请使用.Resize(nrows,ncols)方法。
标签: excel copy-paste vba