2016-11-11 5 views
1

ich ein wenig Mühe habe ich eine Spalte aus einer anderen Arbeitsmappe in eine neue Arbeitsmappe kopieren möchten, und transponieren, aber ich habe einen Fehler bekam wie: Error 1004: PasteSpecial method of range class failedFehler 1004: Pastespecial-Methode des zulässigen Bereichs-Klasse ist fehlgeschlagen

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 

Antwort

1

Grund des Problems

Sie versuchen die Zelle C2 bis C30, so 29-Zellen zu kopieren (30-2 + ​​1) auf der anderen Arbeitsmappe von ihnen zur Umsetzung. Mit anderen Worten, Sie fügen diese Zellen als eine einzelne Zeile mit 29 Spalten ein.

In Ihrer anderen Arbeitsmappe wählen Sie "dynamisch" Ihre Spalten mit If eColumn >= 1 Then eColumn = eColumn + 1 und Sie sind nicht sicher, die Auswahl von 29 Spalten zu haben, die für die Paste erforderlich sind. Das Ergebnis ist am Ende die Fehlermeldung Error 1004: PasteSpecial method of range class failed.

Lösung

Eine der Lösungen wäre direkt die richtige Anzahl von Spalten auswählen, um die Daten und tun so wie dies einzufügen:

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 
Verwandte Themen