Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1292to1296
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
Zeilen von Sheet zu Sheet verschieben
08.01.2013 16:34:34
Sheet
Hallo zusammen!
Über eine Userform werden Daten eingegeben. Diese werden im Sheet Eingang in die letzte freie Zeile in die Spalten B-H geschrieben (siehe Beispiel). Dies funktioniert soweit ganz gut.
Zu meinem Anliegen was jetzt meine VBA-Fähigkeiten sprengt:
Die Bauteile verlassen den Bereich irgendwann wieder und sollen nicht gelöscht werden, sondern in das Sheet Ausgang verschoben/ kopiert werden.
Dazu soll in Spalte i die Angabe Ja/ Nein (oder anderes) ausgewählt werden.
Zeilen mit Ja sollten durch Drücken des Buttons „Ausgehende Bauteile Verschieben“
in das Sheet Ausgang kopiert werden (Spalte B – I). Die ursprüngliche Formatierung in G (bedingte Formatierung usw.) sollte erhalten bleiben.
Die entstandenen Lücken sollten durch die darunterliegenden Datensätze wieder geschlossen werden. (nach Möglichkeit kein Zellen noch oben schieben)
Ist dies in einer VBA – Lösung nach meinen Vorstellungen möglich? Oder muss eine andere Lösung her? Vielleicht kann mir jemand hier behilflich sein.
Vielen Dank
Gruß
Markus
Link zum Beispiel: https://www.herber.de/bbs/user/83293.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen von Sheet zu Sheet verschieben
08.01.2013 16:39:06
Sheet
Also die Daten sollen nicht nach oben geschoben werden. Verstehe ich das richtig der darunterliegende Datensatz soll jetzt 2x erscheinen?

AW: Zeilen von Sheet zu Sheet verschieben
08.01.2013 17:13:17
Sheet
Die darunterliegenden gefüllten Zeilen sollen verschoben werden und nicht zweimal vorkommen.
Die Unklarheit kommt wohl daher: (nach Möglichkeit kein Zellen noch oben schieben)
Ich meinte damit das die leeren Zeilen nicht in der Art wie 'Zeilen löschen' gelöscht werden.
Dadurch verschiebt sich zwar alles nach oben wie gewünscht, aber ebenso die Formatierung die auf
80 Datensätze ausgelegt ist. Irgendwann fehlt die ja und man muss nacharbeiten was ich den
späteren Nutzern nicht machen lassen kann.
Gruß
Markus

Anzeige
AW: Zeilen von Sheet zu Sheet verschieben
08.01.2013 19:29:32
Sheet
Hallo Markus,
vllt. mit diesem Code:
Private Sub cmdAusgang_Click()
Dim ze As Long
Dim lzE As Long
Dim lzA As Long
Dim shE As Worksheet
Dim shA As Worksheet
Set shE = ThisWorkbook.Sheets("Eingang")
Set shA = ThisWorkbook.Sheets("Ausgang")
Application.EnableEvents = False
With shE
.Select
.Range("A2").Select
lzE = .Cells(3, 9).End(xlDown).Row
lzA = shA.Cells(3, 2).End(xlDown).Row + 1
For ze = lzE To 3 Step -1
If LCase(.Cells(ze, 9)) = "ja" Then
.Range(Cells(ze, 2), Cells(ze, 9)).Copy Destination:=shA.Cells(lzA, 2)
.Range(Cells(ze, 2), Cells(ze, 9)).ClearContents
lzA = shA.Cells(3, 2).End(xlDown).Row + 1
End If
Next
End With
shE.Range("B2:I" & lzE).Select
shE.Sort.SortFields.Clear
shE.Sort.SortFields.Add Key:=Range("B3:B" & lzE) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With shE.Sort
.SetRange Range("B2:I" & lzE)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
shE.Range("A3").Select
Application.EnableEvents = True
End Sub

Gruß
Jochen

Anzeige
AW: Zeilen von Sheet zu Sheet verschieben
08.01.2013 21:36:31
Sheet
Hallo Markus,
ich würde das Thema anders aufbauen - zB. das ganze passiert nur über Userform's, ohne "sichtbare Tabellen". Der Mix aus Userform's und Tabellen mit Formeln, bedingten Formatierungen, etc ist meist fehleranfälliger/umständlicher.
zu deiner Frage: weise folgende Prozedur (in allg. Modul) deiner Schaltfläche zu:
Option Explicit
Sub Verschieben()
Dim wksDst As Worksheet
Dim i As Long
Dim lngLR As Long
Const FIRSTROW As Long = 3
Set wksDst = ThisWorkbook.Sheets("Ausgang")
With ThisWorkbook.Sheets("Eingang")
For i = FIRSTROW To .Cells(.Rows.Count, 1).End(xlUp).Row
If LCase(.Cells(i, 9).Text) = "ja" Then
lngLR = wksDst.Cells(wksDst.Rows.Count, 2).End(xlUp).Row
wksDst.Cells(lngLR + 1, 2).Resize(, 8).Value = _
.Cells(i, 2).Resize(, 8).Value
.Cells(i, 2).Resize(79 - i + FIRSTROW - 1, 8).Value = _
.Cells(i + 1, 2).Resize(79 - i + FIRSTROW - 1, 8).Value
i = i - 1
End If
Next
End With
Set wksDst = Nothing
End Sub
Gruß
Christian

Anzeige
AW: Zeilen von Sheet zu Sheet verschieben
10.01.2013 16:21:11
Sheet
Hallo Christian,
danke für deine Anregung und für deine Prozedur. Klappt sehr gut.
Was meinst du "ohne sichtbare Tabellen"?
Mit der Userform wollte ich eine einfache Eingabemöglichkeit für die Nutzer darstellen.
(statt von Zelle zu Zelle springen)
Die Infos in Spalte G sollen farblich hinterlegt sein. Was anderes als bedingte Formatierung ist jetzt
mir hier auch nicht eingefallen. Nun ja, eine VBA Lösung geht bestimmt auch.
Nun gut. Ich schau mir alles nochmals an und probiere noch rum. Vielleicht fällt mir ja noch was ein.
Gruß
Markus

143 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige