2013-10-19 139 views
0

我正在嘗試使用'For Each Column'循環將粘貼內容從一個表單複製到另一個表單。 我想要正確引用列對象中的單元格。或者至少這是我認爲的問題所在。Excel VBA,如何從列對象內複製單元格

爲什麼行表(「二合一」)......給這個錯誤:對象不支持此屬性或方法

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 
+0

你想複製什麼 - 整列?一些列的細胞?從列的一些單細胞? –

回答

2

假設您想要複製在Used Range範圍內每列中的第二個單元格中開始的範圍,並且此範圍的副本應該與該列中非空行的最後一個數一樣長,則應使用此範圍短代碼:

'... 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] 
0

粘貼不是範圍對象的方法。

這就是爲什麼簡單的東西如:

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

也將失敗。

替代方法是選擇第二張紙,在第二張紙上選擇一個單元格,最後粘貼到第二張紙上。

相關問題