Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen Kopieren wenn, bei Änderungen nur diese

Forumthread: Zeilen Kopieren wenn, bei Änderungen nur diese

Zeilen Kopieren wenn, bei Änderungen nur diese
25.08.2017 14:55:44
Lenny
Guten Tag zusammen
Habe mir ein Makro zusammengebastelt, das mir ein Tabellenblatt (Tabelle1) durchsucht und wenn in der Spalte N der Wert x steht, die Zeile kopiert und in das Tabellenblatt2 einfügt. Das funktioniert!
Zusätzlich soll das Makro bei Änderungen das Prozedere wiederholen. Das funktioniert leider nicht so wie ich mir das vorgestellt habe. Anstatt nur die Änderungen in die Tabelle2 zu kopieren, werden alle Treffer erneut in die Tabelle kopiert.
Wie kann ich verhindert, dass das geschieht? Es sollen ja Zeilen kopiert werden in den sich der Wert in Spalte N geändert hat kopiert werden.
Hier mal mein Makro:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, suchCol As Long
Dim strSearch As String
Dim srcWks As Worksheet, tarWks As Worksheet
'srcWks wo gesucht werden soll
Set srcWks = Worksheets("Tabelle1")
'tarWks wo hinkopiert werden soll
Set tarWks = Worksheets("Tabelle2")
'z.B 14 = Spalte N
suchCol = 14
'strSearch = was gesucht werden soll
strSearch = "x"
With srcWks
For i = 1 To .Cells(Rows.Count, suchCol).End(xlUp).Row
If .Cells(i, suchCol).Text = strSearch Then
Rows(i).Copy Destination:=tarWks.Cells(tarWks.Cells(Rows.Count, 1).End(xlUp). _
Row + 1, 1)
End If
Next i
End With
End Sub
Vielen Dank in Voraus für eure Hilfe
Gruss Lenny
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen Kopieren wenn, bei Änderungen nur diese
25.08.2017 17:40:04
ChrisL
Hi Lenny
Die Variante immer alles zu übertragen ist vielleicht gar nicht so schlecht? Wobei Autofilter und Copy/Paste schneller wäre.
Sicherlich müsstest du auf ein Change- anstelle von SelectionChange-Ereignis umstellen. Eingegrenzt auf die x-Spalte...
If Target.Column = 14 Then ...
Prüfen ob da ein "x" steht
If Target = "x" Then Rows(Target.Row).Copy "Ziel"
Problematisch wird es wenn du ganze Bereiche z.B. mittels Copy/Paste "x" veränderst. Dann bräuchte es noch eine Schleife über alle Target-Zeilen.
Noch problematischer wirds, wenn du auch noch "x"-en wieder entfernst bzw. andere Inhalte verändern willst. Dann liessen sich bestehende und neue Datensätze vermutlich nur über eine eindeutige ID-Nummer identifizieren.
Wenn du Auswerten oder Reporten willst, dann wäre ein kompletter Übertrag bei Aktivierung der Auswertung (Worksheet_Activate Ereignis) sinnvoll.
Wenn es um den Arbeitsablauf (Workflow) geht, dann müsste der Datensatz nach Übertrag konsequenterweise gelöscht werden resp. du verschiebst die Aufgaben von einem Blatt (z.B. offen, erledigt) ins nächste.
Zwei Blätter gleichzeitig bearbeiten und synchronisieren würde ich weniger empfehlen. Da müsste nur mal einer die Datei verändern ohne die Makros zu aktivieren und schon hast du den Salat, weil du dann zwei unterschiedliche Datensätze hast, ohne Plan welcher der Richtige ist.
cu
Chris
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige