2016-11-11 318 views
1

我有一點點麻煩,我想一列從另一個工作簿複製到一個新的工作簿和調換,但我有這樣的錯誤:Error 1004: PasteSpecial method of range class failed錯誤1004:Range類的PasteSpecial方法失敗

Private Sub CommandButton1_Click() 

    ActiveSheet.Range("C2:C30").Copy 
    Workbooks.Open Filename:="E:\PENDIDIKAN_BJN\SUM.xlsx" 
    eColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column 
    If eColumn >= 1 Then eColumn = eColumn + 1 
    ActiveSheet.Cells(1, eColumn).Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, Skipblanks:=False, Transpose:=True 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 
    Application.CutCopyMode = False 

End Sub 

回答

1

原因問題

的你是通過轉他們試圖在C2單元格複製到C30,所以29個細胞(30-2 + 1)到其他工作簿。換句話說,將這些單元格粘貼爲29列的單行。

在您的其他工作簿中,您使用If eColumn >= 1 Then eColumn = eColumn + 1「動態」選擇了列,因此您不一定會選擇需要執行粘貼的29列。

最後的結果是錯誤消息Error 1004: PasteSpecial method of range class failed

解決方案

解決的辦法之一是直接選擇粘貼數據列的權數,這樣做是這樣的:

Private Sub CommandButton1_Click() 

    ActiveSheet.Range("C2:C30").Copy 
    ' Store the number of rows selected in the eColumn associated before opening the other file 
    ' Since this is a transposition the number of rows is the same as the target number of columns 
    eColumn = Selection.Rows.Count 

    Workbooks.Open Filename:="E:\PENDIDIKAN_BJN\SUM.xlsx" 
    ActiveSheet.Cells(1, eColumn).Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, Skipblanks:=False, Transpose:=True 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 
    Application.CutCopyMode = False 

End Sub 
相關問題