Zeile in eine andere Tabelle kopieren mit Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Zeile in eine andere Tabelle mit VBA zu kopieren, kannst Du folgende Schritte befolgen:
-
Öffne den Visual Basic for Applications (VBA) Editor:
-
Füge ein neues Modul hinzu:
- Klicke auf
Einfügen
> Modul
.
-
Gib den folgenden Code ein:
Sub ZeileKopieren()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
n = Tabelle2.UsedRange.Rows.Count + 1
If Tabelle2.Cells(1, 1) = "" Then n = 1
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For Zeile = ZeileMax To 1 Step -1
If UCase(.Cells(Zeile, 6).Value) = "FERTIG" Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
.Rows(Zeile).Delete
n = n + 1
End If
Next Zeile
End With
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Füge einen Button hinzu:
- Gehe zu
Entwicklertools
> Einfügen
und wähle ein Button-Steuerelement aus.
- Weisen den Button der
ZeileKopieren
-Sub zu.
-
Testen:
- Trage in Spalte F „FERTIG“ ein und klicke auf den Button, um die Zeile in das andere Tabellenblatt zu kopieren und sie gleichzeitig zu löschen.
Häufige Fehler und Lösungen
-
Syntaxfehler bei Target.Column
:
- Stelle sicher, dass der Code im richtigen Modul platziert ist. Dieser Code gehört nicht in ein Arbeitsblattmodul.
-
ZeileMax zeigt falsche Werte:
- Überprüfe, ob Du die richtige Tabelle verwendest. Der Befehl
.UsedRange.Rows.Count
zählt nur die verwendeten Zeilen.
-
Der Button löscht die falschen Zeilen:
- Stelle sicher, dass die Schleife rückwärts läuft (
Step -1
), um zu vermeiden, dass Zeilen übersprungen werden.
Alternative Methoden
Wenn Du nicht mit einem Button arbeiten möchtest, kannst Du das Kopieren der Zeilen auch automatisch mit dem Worksheet_Change
-Ereignis auslösen. Hier ist ein Beispiel:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loLetzte As Long
If Target.Column = 6 And Target.Value = "FERTIG" Then
With Worksheets("Tabelle2")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Target.EntireRow.Copy .Rows(loLetzte)
Target.EntireRow.Delete
End With
End If
End Sub
Praktische Beispiele
Angenommen, Du hast in Tabelle1
mehrere Zeilen und markierst einige davon mit „FERTIG“ in Spalte F. Mit dem oben genannten VBA-Code kannst Du alle diese Zeilen auf einmal in Tabelle2
kopieren und sie aus Tabelle1
löschen.
Tipps für Profis
FAQ: Häufige Fragen
1. Warum funktioniert mein Button nicht?
- Überprüfe, ob der Button mit der richtigen Subroutine verknüpft ist.
2. Was bewirkt Step -1
in der Schleife?
- Es sorgt dafür, dass die Schleife von unten nach oben durchläuft, um das Überspringen von Zeilen zu vermeiden, wenn eine Zeile gelöscht wird.
3. Kann ich mehrere Zeilen kopieren?
- Ja, der oben angegebene Code kopiert alle Zeilen, die "FERTIG" in Spalte F haben, in
Tabelle2
.
4. Wie ändere ich die Zieltabelle?
- Ändere einfach den Namen in der Zeile
With Worksheets("Tabelle2")
.
5. Brauche ich spezielle Berechtigungen, um VBA zu verwenden?
- Stelle sicher, dass die Makros in Deiner Excel-Datei aktiviert sind, um VBA-Code auszuführen.