2016-04-22 18 views
0

Guten Tag.Kopieren von Zellen von Arbeitsmappe zu Arbeitsmappe Ergebnisse in "Index außerhalb des Bereichs"

Ich versuche, einen Code zu schreiben, der im Wesentlichen Zellen (von links nach rechts) von "A - M" und (nach unten) bis zur letzten verwendeten Zeile auswählt.
Dann, einmal ausgewählt, sollte ich sie in eine andere Arbeitsmappe kopieren.

Dies ist der Code, den ich zu verwenden versucht:

ActiveWorkbook.Worksheets("Sheet1").Range("A1:M" & LastRow).Copy _ 
    Workbooks("Converter.xlsm").Worksheets("Sheet1").Range("A1").CurrentRegion 

Alles andere im Code außer für diese Linie funktioniert. diese
Und das Ergebnis ist:

Run-time error '9': 

Subscript out of range 

Dank.

PS. Die "LastRow" Variable, die ich benutzt habe, habe ich gerade aus einem Tutorial gezogen. Das ist keine persönliche benutzerdefinierte Variable, daher bin ich mir nicht sicher, ob das tatsächlich aus der Dokumentation von VBA stammt.

+1

versuchen Sie nehmen '.CurrentRegion' für die Zielzellen – Rosetta

Antwort

0

Sie haben erwähnt, dass Sie keine Berechnung für LastRow haben.

  1. Setzen Sie immer Option Explicit oben auf Ihrem Modul. Es zwingt Sie, Ihre Variablen zu deklarieren und hilft Ihnen zu erkennen, ob etwas, das Sie von einem anderen Coder bekommen haben, "eingebaut" ist oder nicht.
  2. Siehe this post über die Bestimmung der letzten Zeile in einem Bereich.
  3. Von diesem Posten, sollten Sie eine Berechnung wie die folgenden, bevor Sie Ihren Code-Zeile haben ...

    LastRow = Sheets("Sheet1").Range("A" & Sheets("Sheet1").Rows.Count).End(xlUp).Row 
    
+0

Ah ... Ich verstehe. Also, "Option Explicit" wird eine automatische Hilfe sein. Vielen Dank. Aber ich muss fragen. Was ist "xlUp"? – TheBSITGuy

+0

xlUp ist eine konstante, eingebaute Funktionalität von VBA für Excel. – OldUgly

+0

Vielen Dank. :) – TheBSITGuy

0

alle Arbeitsmappen Bitte schließen und erneut öffnen und dann mit unten versuchen, Code

Sub test() 
    Dim lastrow As Long 
    lastrow = Range("A" & Rows.Count).End(xlUp).Row 
    ActiveWorkbook.Worksheets("Sheet1").Range("A1:M" & lastrow).Copy Workbooks("Converter.xlsm").Worksheets("Sheet1").Range("A1") 
End Sub 
Verwandte Themen