Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
688to692
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
688to692
688to692
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen verschieben - dann löschen

Zeilen verschieben - dann löschen
01.11.2005 00:25:54
Chris
Hallo,
ich suche schon seit längerem im Archiv, kann aber nichts finden. Ich habe folgendes Problem.
Ich gebe über ein Formular Daten in eine Tabelle ein. Wenn ein Datensatz komplett ist, habe ich mir überlegt, wird meinetwegen in Spalte A ein "X" erfasst. Alle Zeilen mit einem X sollen dann in das zweite Tabellenblatt kopiert werden und aus der Tabelle1 soll der Datensatz rausgelöscht werden (ohne das eine leere Zeile übrig bleibt).
Wichtig ist auch: Die Prozedur wird öfters wiederholt. Das heißt es sollte nicht passieren, dass wenn das Makro 2-mal läuft, dass dann die ersten kopierten Zeilen in Tabelle2 üerschrieben werden, sondern die Daten in Tabelle2 fortgesetzt werden.
Noch schöner wäre es, wenn Excel das immer gleich bei der Eingabe überprüfen würde - also sobad ich das "X" irgendwo erfasse, wird die Zeile ausgeschnitten und in Tabelle2 eingefügt.
Wenn ich mich nicht verständlich genug ausgedrückt habe, meldet euch bitte.
Da ich nun schon seit Stunden suche, hoffe ich dass ihr mir helfen könnt.
Ihr würdet mir einen riesigen Gefallen tun.
Alles Gute
Chris

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen verschieben - dann löschen
01.11.2005 01:01:12
Matthias
Hallo Chris,
wie wärs mit einem Doppelklick auf die Zeile, die verschoben werden soll:
Ins Tabellenblattmodul des Formularblattes:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim z As Long
Dim shZiel As Worksheet
If Target.Row < 2 Or Cells(Target.Row, 1) = "" Then Exit Sub
Cancel = True 'Damit der Curson anschließend nicht in der Zelle blinkt
If MsgBox("Daten verschieben?", vbOKCancel + vbQuestion) = vbCancel Then Exit Sub
Set shZiel = Sheets("Tabelle2") 'Namen anpassen!
z = shZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(Target.Row, 1).EntireRow.Cut Destination:=shZiel.Cells(z, 1)
End Sub

(Wenn die Spalte A leer ist oder die Zeile kleiner 2, wird nicht verschoben (Kopfzeile!).
Gruß Matthias
Anzeige
AW: Zeilen verschieben - dann löschen
01.11.2005 09:03:05
Chris
Hallo,
Danke für den Vorschlag zu der späten Stunde, aber leider hilft mir das nicht.
Ich ergänze über eine "userform" die Daten aus der "Tabelle1". Wenn in einer bestimmten Zeile alles nötige erfasst ist, soll diese Zeile einfach in "Tabelle2" gespeichert werden. Da ich nicht direkt in der Tabelle erfasse hilft mir der Doppelklick auf die Zeile nicht weiter. Deswegen hatte ich die Idee zusätlich noch in einer Spalte ein "x" zu erfassen und dann per Makro die entprechenden Zeilen suchen zu lassen und zu verschieben.
Hoffentlich könnt ihr mir helfen.
Gruß
Chris
AW: Zeilen verschieben - dann löschen
01.11.2005 09:12:30
Matthias
Hallo Chris,
dann vielleicht so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Range, ber As Range
Dim zeile As Long, i As Long
Dim shZiel As Worksheet
Set shZiel = Sheets("Tabelle2") 'Namen anpassen!
Set ber = Intersect(Target, Range("A2:A65536")) 'Diesen Bereich überwachen
'Zeilen mit X kopieren
If Not ber Is Nothing Then
For Each z In ber
zeile = shZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
z.EntireRow.Copy Destination:=shZiel.Cells(zeile, 1)
Next z
End If
'Zeilen mit X löschen
zeile = Cells(Rows.Count, 1).End(xlUp).Row
For i = zeile To 2 Step -1
If UCase(Cells(i, 1)) = "X" Then
Rows(i).Delete shift:=xlUp
End If
Next i
End Sub

Gruß Matthias
Anzeige
AW: Zeilen verschieben - dann löschen
01.11.2005 10:57:24
Chris
Hi,
erstmal Danke - das ist genau das was ich gesucht habe :)
Aber ich habe ein kleines Problem - irgendwo muss ein kleiner Fehler sein.
Wenn ich das X setze verschiebt sich die Zeile wie gewünscht in Tabelle2. Aber leider auch die Zeile daruter! Die wird dann zwar nicht gelöscht aber immer mit verschoben - das soll so nicht sein.
Kannst Du mir noch mal helfen?
Danke
Chris
AW: Zeilen verschieben - dann löschen
02.11.2005 15:54:53
Matthias
Hi Chris,
soory dass es so lange gedauert hat.
Ich habe vergessen, die Ereignisprozeduren abzuschalten. Dann hat der Löschbefehl nochmal die Change-Prozedur ausgelöst.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Range, ber As Range
Dim zeile As Long, i As Long
Dim shZiel As Worksheet
Set shZiel = Sheets("Tabelle2") 'Namen anpassen!
Set ber = Intersect(Target, Range("A2:A65536")) 'Diesen Bereich überwachen
'Zeilen mit X kopieren
On Error GoTo errhandler
Application.EnableEvents = False
If Not ber Is Nothing Then
For Each z In ber
zeile = shZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
z.EntireRow.Copy Destination:=shZiel.Cells(zeile, 1)
Next z
End If
'Zeilen mit X löschen
zeile = Cells(Rows.Count, 1).End(xlUp).Row
For i = zeile To 2 Step -1
If UCase(Cells(i, 1)) = "X" Then
Rows(i).Delete shift:=xlUp
End If
Next i
errhandler:
Application.EnableEvents = True
End Sub

Gruß Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige