Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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

VBA-> Filtern, kopieren -> usw???

VBA-> Filtern, kopieren -> usw?
14.05.2014 08:52:31
Marcy
Hallo Forum,
kann mir jemand helfen?
Ich habe für einen nicht Excelkenner schon lange eine hilfreiche Datei zum Planen und Einteilen von Praktikanten.
In gewissen Abstände muss ich allerdings manuell die ehemaligen Praktikanten in ein anderes Tabellenblatt verschieben.
Das ist kein Problem, ich hätte aber gerne ein VBA, damit ich ein Button
"Fertige Prakitkanten in EHEMALIGE verschieben" kann.
Dann könnte der zuständige Praktikanten Betreuer seine Liste zukünftig selbstständig plegen.
VBA mit meinen Worten
Wir befinden uns in Tabellenblatt 'Schülerpakt.+freiwillig'
-Setze in Zeile 32 Spalte D den Filter auf Datum, und zeige alle die kleiner sind als heute()
-Kopiere die sichtbaren Einträge von Spalte A bis Spalte O
-Gehe zu Tabellenblatt 'Ehemalige' und suche die erste freie Zeile (Randinfo: in Spalte B sind ausnahmslos alle Zellen gefüllt)
-Füge in der ersten freien Zeile den Zwischenspeicher (WERTE) ein.
-Gehe zurück in Tabellenblatt 'Schülerpakt.+freiwillig'
-Lösche alle Zeilen kpl., die mit dem Filter sichtbar sind.
Schalte den Filter.
Ich hoffe dass ist so verständlich.
Wünsche noch eine angenehme Restwoche
Gruß Marcy

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 11:44:33
Rudi
Hallo,
ohne Filter:
Sub Ehemalige_raus()
Dim rngDel As Range, rng As Range
For Each rng In Range(Cells(2, 4), Cells(Rows.Count, 4).End(xlUp))
If rng 

Gruß
Rudi

AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 13:19:45
Marcy
Hallo Rudi,
vielen Dank für die schnelle Antwort.
Ich habe allerdings paar Problemchen.
Zum Test lief es mal, aber hat deutlich mehr gemacht, es hat auch die Schriftfelder in Tabellenblatt 'Schülerpakt.+freiwillig' kopiert und in Tabellenblatt 'Ehemalige' eingefügt.
Dann bei weiteren Test´s Error 400.
Ich habe deinen Code lediglich durch
am Anfang
ActiveSheet.Unprotect "PASSWORT"~f~
und am Ende
~f~
ActiveSheet.Protect "PASSWORT"
ergänzt (da die Tabelle automatisch beim Schließen geschützt wird)
Ohne die Ergänzung ging es wegen dem Schutz vermutlich nicht.
Manuell mache ich es so:
1) Tabellenblatt 'Schülerpakt.+freiwillig' Filter D32 auf ältere Daten wie heute setzen
2) Filterergebnis markieren und kopieren
3) Klick ins Tabellenblatt 'Ehemalige' und ans Ende scrollen
4) in der ersten freien Zeile Inhalte einfügen und dann Werte
5) zurück ins Tabellenblatt 'Schülerpakt.+freiwillig'
6) Zeilen des Filterergebnis markieren
7) Zeilen löschen
8) fertig :-)
Ein Praktikant der drei Wochen bleibt steht so in der Liste angenommen sein Eintrag beginnt bei Zeile 50
A50 leer, B50 Name, C50 Anfangsdaum, D50 Enddatum E:O sind weitere Zusätze (Einteilung etc)
A51 die KW der ersten Woche, B51 Name, C51 leer, D51 Enddatum
A52 die KW der zweiten Woche, B52 Name, C52 leer, D52 Enddatum
A53 die KW der dritten Woche, B53 Name, C53 leer, D53 Enddatum
Ich hoffe Du verstehst was ich meine.
Gruß Marcy

Anzeige
AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 13:24:57
Rudi
Hallo,
das mit Zeile 32 hab ich überlesen.
Datum ab D33:
For Each rng In Range(Cells(33, 4), Cells(Rows.Count, 4).End(xlUp))
Gruß
Rudi

AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 14:04:26
Marcy
Hallo Rudi,
guck mal, ich habe die
MsgBox "TEST geht"
immer weiter nach unten geschoben und dann getestet.
An der Position wo sie jetzt steht, wird sie noch angezeigt, nach ok kommt dann Error 400.
Tiefer kommt direkt Errror 400.
Vielleicht noch ein Zusatz den Du wissen musst.
Beim Eintragen der Praktikanten, werden diese nach dem Anfangsdatum sortiert in der Liste positioniert.
Also die in 2015 kommen, stehen weiter unten, die akutellen weiter oben.
Es kann sein, dass in Zeile 33 der Praktikant schon seit Wochen hier ist und noch paar Wochen bleibt.
Darunter es aber schon ehemalige gibt, da diese nur 2 Wochen geblieben sind.
Nicht das der Code von oben nach sucht, findet aber in Zeile 33 ein Datum der Zukunft und bricht ab.
Gruß Marcy
Sub Ehemalige_raus()
ActiveSheet.Unprotect "Passwort"
Dim rngDel As Range, rng As Range
For Each rng In Range(Cells(33, 4), Cells(Rows.Count, 4).End(xlUp)) 'ab Zeile 33 in Spalte D
If rng 

Anzeige
AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 15:07:34
Marcy
Hallo Rudi,
guck mal, ich habe die
MsgBox "TEST geht"
immer weiter nach unten geschoben und dann getestet.
An der Position wo sie jetzt steht, wird sie noch angezeigt, nach ok kommt dann Error 400.
Tiefer kommt direkt Errror 400.
Vielleicht noch ein Zusatz den Du wissen musst.
Beim Eintragen der Praktikanten, werden diese nach dem Anfangsdatum sortiert in der Liste positioniert.
Also die in 2015 kommen, stehen weiter unten, die akutellen weiter oben.
Es kann sein, dass in Zeile 33 der Praktikant schon seit Wochen hier ist und noch paar Wochen bleibt.
Darunter es aber schon ehemalige gibt, da diese nur 2 Wochen geblieben sind.
Nicht das der Code von oben nach sucht, findet aber in Zeile 33 ein Datum der Zukunft und bricht ab.
Gruß Marcy
Sub Ehemalige_raus()
ActiveSheet.Unprotect "Passwort"
Dim rngDel As Range, rng As Range
For Each rng In Range(Cells(33, 4), Cells(Rows.Count, 4).End(xlUp)) 'ab Zeile 33 in Spalte D
If rng 

Anzeige
AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 15:47:01
Marcy
Hallo Rudi,
sorry für die Umstände.
Die Tabelle läuft schon lange.
Im Tabblatt Ehemalige ist der erste Ehemalige in Zeile 4.
In den ersten drei Zeilen sind die Zellen beschrieben mit Formeln.
Jetzt, wo ich die ersten drei Zeilen mal geleert habe, geht es seltsamer Weise.
Kann der Code ergänzt werden?
Im Tabellenblatt 'Ehemalige' die erste frei Zelle in Spalte B ab Zeile 4 finden.
Schreiben dann ab Spalte A (B ist lückenlos mit NAME gefüllt, in A ist jeweils die erste Zeile pro Praktikant leer) daher besser in B suchen.
Dann hoffe ich, sollte es gehen.
Gruß Marcy

Anzeige
AW: VBA-> Filtern, kopieren -> usw?
14.05.2014 16:14:13
Rudi
Hallo,
rngDel.EntireRow.Copy Sheets("Ehemalige").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
Gruß
Rudi

AW: VBA-> Filtern, kopieren -> usw?
15.05.2014 06:43:08
Marcy
Hallo Rudi,
vielen lieben Dank.
Einfügen Werte wäre noch schön.
Leider kommen manche Ideen erst wenn es läuft.
- Geht noch, MsgBox "keine Ehemalige gefunden"
Am Ende habe ich MsgBox "Ehemalige wurden ins Tabellenblatt EHEMALIGE verschoben."
eingefügt. Klappt gut, kommt auch nicht, wenn keine verschoben wurden.
Richtig super wäre, wenn die Anzahl der verschobenen in der MsgBox mit dabei wären.
Wie vorher beschrieben hat ein Praktikant immer einen Block mit einer obersten Zeile, ab dann pro KW eine Zeile.
Aber egal wie lange er bleibt, das Anfangsdatum steht nur 1x pro Praktikant in Spalte C.
Wenn ich es könnte, würde ich es so programmieren:
(Dein Code hat soeben in 'Ehemalige' rein geschrieben)
Wie oft befindet sich in dem Bereich der eingefügt wurde ein Eintrag in Spalte C? Gib das Ergebnis in der MsgBox wieder.
Beispiel bei drei verschobenen die je drei Wochen blieben, sind vier Zeilen pro Praktikant (eine Überschriftszeile und pro KW je eine folgende Zeile.
Macht 12 Zeilen die verschoben wurden, aber nur drei Mal stand in Spalte C ein Datum.
Selbst wenn Du nichts ergänzt, bin ich mehr als zufrieden Rudi.
Vielen Daaaaaaank,
Marcy
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige