VBA: Zeilen kopieren ohne EntireRow.Copy
Schritt-für-Schritt-Anleitung
- Öffne Excel und gehe in den VBA-Editor (Alt + F11).
- Erstelle ein neues Modul:
- Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
- Füge den folgenden Code ein, um nur bestimmte Spalten zu kopieren:
Public Sub FindenUndKopieren()
Dim rng As Range
Dim vWert As Variant
Dim sFirstAddress As String
vWert = InputBox(prompt:="Bitte Nummer eingeben:", Title:="Suche")
With Worksheets("Blatt1")
Set rng = .Columns(1).Find(vWert)
If rng Is Nothing Then
MsgBox "Wert " & vWert & " nicht gefunden!"
Else
sFirstAddress = rng.Address
Do
' Kopiere die Werte von Spalte A, C und D, überspringe B
Call Union(rng, rng.Offset(0, 2).Resize(1, 2)).Copy(Destination:= _
Worksheets("Tabelle1").Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0))
Set rng = .Columns(1).FindNext(rng)
Loop Until rng.Address = sFirstAddress
End If
End With
End Sub
- Schließe den Editor und kehre zu Excel zurück.
- Führe das Makro aus (Alt + F8) und wähle "FindenUndKopieren".
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zur Verwendung von EntireRow.Copy
ist die Verwendung von Resize
und Union
. So kannst du gezielt die benötigten Zellen kopieren, ohne die komplette Zeile zu verwenden:
' Beispiel für das Kopieren der Spalten A und C
Call Union(rng, rng.Offset(0, 2)).Copy(Destination:= _
Worksheets("Tabelle1").Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0))
Praktische Beispiele
Wenn du spezifisch nur die Werte aus den Spalten A, C und D kopieren möchtest, kannst du den Code wie folgt anpassen:
Call Union(rng, rng.Offset(0, 2).Resize(1, 2)).Copy(Destination:= _
Worksheets("Tabelle1").Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0))
Hierbei wird Union
verwendet, um die gewünschten Zellen auszuwählen und zu kopieren.
Tipps für Profis
- Nutze Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
- Wenn du regelmäßig mit VBA arbeitest, speichere deine Makros in einer Personal Macro Workbook-Datei, damit sie in allen Excel-Dokumenten verfügbar sind.
FAQ: Häufige Fragen
1. Kann ich mehrere Spalten gleichzeitig kopieren?
Ja, benutze die Union
-Funktion, um mehrere nicht zusammenhängende Bereiche auszuwählen.
2. Wie kann ich die Zeilen formatieren, während ich sie kopiere?
Du kannst das Kopieren von Formatierungen hinzufügen, indem du PasteSpecial
mit dem Parameter xlPasteFormats
verwendest.
3. Was mache ich, wenn ich nur bestimmte Zeilen basierend auf einem Kriterium kopieren möchte?
Du kannst eine If
-Bedingung innerhalb deiner Schleife verwenden, um nur die Zeilen zu kopieren, die deinem Kriterium entsprechen.