Letzte Zeile in Excel VBA ermitteln und Werte einfügen
Schritt-für-Schritt-Anleitung
-
Arbeitsmappen aktivieren: Aktiviere die Arbeitsmappe, in der Du arbeiten möchtest.
Windows("LAGER Rohstoffe ab 01.01.2013 v2.xlsm").Activate
-
Worksheet-Objekte setzen: Setze die entsprechenden Worksheet-Objekte.
Dim wks1 As Worksheet, wks2 As Worksheet
Set wks1 = Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
Set wks2 = Worksheets("Pivots")
-
Letzte Zeile ermitteln: Bestimme die letzte Zeile in der Ziel-Tabelle.
Dim lastCell As Long
lastCell = wks2.Range("C65536").End(xlUp).Row
-
Werte kopieren: Verwende die PasteSpecial-Methode, um nur die Werte zu kopieren und nicht die Formeln.
wks2.Range("A15:AS15").Copy
wks1.Range("C" & lastCell + 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Häufige Fehler und Lösungen
-
Laufzeitfehler 13 - Typen unverträglich: Dieser Fehler tritt auf, wenn Du versuchst, etwas zuzuweisen, das nicht kompatibel ist. Achte darauf, dass Du nicht versuchst, eine Zelle mit einer Range zu überschreiben.
-
Doppelte Dimensionierung von Variablen: Wenn Du lastCell
und lastColumn
mehrfach in einem Sub definierst, erhältst Du einen Fehler. Dimensioniere sie nur einmal.
Alternative Methoden
Eine alternative Methode zur Ermittlung der letzten Zeile könnte die Verwendung von UsedRange
sein:
lastCell = wks2.UsedRange.Rows.Count
Das gibt Dir die Anzahl der genutzten Zeilen zurück, was in manchen Fällen einfacher sein kann.
Praktische Beispiele
Hier ist ein vollständiges Beispiel, um Daten aus einem Pivot-Tabellenblatt in zwei verschiedene Tabellenblätter zu kopieren:
Sub Test()
Dim wks1 As Worksheet, wks2 As Worksheet, wksPivot As Worksheet
With Workbooks("LAGER Rohstoffe ab 01.01.2013 v2.xlsm")
Set wks1 = .Worksheets("ROHSTOFFE DETAILS ab 01.01.2013")
Set wks2 = .Worksheets("ROHSTOFFE ab 01.01.2013")
Set wksPivot = .Worksheets("Pivots")
End With
'Kopie Rohstoffe Details
wksPivot.Range("A15:AS15").Copy
wks1.Range("C" & wks1.Cells(Rows.Count, 3).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues
'Kopie Rohstoffe
wksPivot.Range("A21:W21").Copy
wks2.Range("C" & wks2.Cells(Rows.Count, 3).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Tipps für Profis
-
Verwende Application.ScreenUpdating = False
: Deaktiviere die Bildschirmaktualisierung während des laufenden Codes, um die Ausführungsgeschwindigkeit zu erhöhen.
-
Fehlerbehandlung einbauen: Nutze On Error Resume Next
und On Error GoTo 0
, um mögliche Laufzeitfehler zu steuern und zu vermeiden.
FAQ: Häufige Fragen
1. Kann ich die Methode in anderen Excel-Versionen verwenden?
Ja, die Methode funktioniert in den meisten Versionen von Excel, die VBA unterstützen.
2. Wie kann ich die letzte Zeile in einer bestimmten Spalte ermitteln?
Du kannst die letzte Zeile in einer bestimmten Spalte wie folgt ermitteln:
lastCell = wks2.Cells(wks2.Rows.Count, "C").End(xlUp).Row
3. Was ist der Unterschied zwischen Copy und PasteSpecial?
Copy
kopiert sowohl den Wert als auch die Formatierung, während PasteSpecial
Dir erlaubt, nur die Werte, Formate oder andere Eigenschaften zu wählen.