Excel VBA,如何从Column对象内复制单元格

我正在尝试使用“For Each Column”循环将粘贴内容从一个表格复制到另一个表格。 我蹒跚地正确引用列对象中的单元格。 或者至less这是我认为的问题。

为什么行表(“组合”)…给这个错误:对象不支持这个属性或方法

Sub CRangeCopy() Set ws = Sheets("Sheet1") ColNr = 1 For Each c In ws.UsedRange.Columns lastCellNr = c.Cells.Count c.Cells(2, lastCellNr).Copy Sheets("Sheet2").Cells(2, ColNr).Paste ' Object doesn't support ' this property or method ColNr = ColNr + 1 Next c End Sub 

编辑:

我已经做了build议的更改,现在使用Range,下面的代码有时在debugging模式下工作,但不是当我作为整体运行时? 任何想法为什么?

  Sub CopyToNewSheet() Sheets.Add.Name = "Combo" Set ws = Sheets("Sheet1") For Each c In ws.UsedRange.Columns Range(Cells(2, c.Column), Cells(4, c.Column)).Copy Sheets("Combo").Cells(2, c.Column) Next c End Sub 

假设你想复制范围在你的UsedRange中的每一列的第二个单元格中开始,并且这个复制范围应该和那个列中非空行的最后一个数一样长,你应该使用这个短代码:

 '... your code here For Each c In ws.UsedRange.Columns lastCellNr = c.Cells.Count Range(Cells(2, c.Column), Cells(lastCellNr, c.Column)).Copy Sheets("sheet2").Cells(2, ColNr) ColNr = ColNr + 1 Next c '...rest of your code here 

简单说明: Range.Copy方法允许添加需要参考其他范围的destination parameter 。 句法:

 Range.Copy [DestinationRange] 

粘贴不是范围对象的方法。

这就是为什么如此简单的原因:

 Sub NoGood() Range("A1").Copy Range("A2").Paste End Sub 

也会失败。

替代方法是select第二张纸,在第二张纸上select一个单元格,最后粘贴到第二张纸上。