Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige