0

我正在尝试使用“For Each Column”循环将粘贴内容从一张纸复制到另一张纸。我正在努力正确引用列对象中的单元格。或者至少这就是我认为的问题所在。

为什么行 Sheets("Combo")... 给出此错误:对象不支持此属性或方法

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

编辑:

我已经进行了建议的更改,现在正在使用 Range,下面的代码有时可以在调试模式下工作,但当我整体运行时却不行?任何想法为什么?

   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
4

2 回答 2

2

假设您要复制从 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]
于 2013-10-19T12:23:35.877 回答
0

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

这就是为什么像这样简单的事情:

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

也会失败。

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

于 2013-10-19T12:21:44.100 回答