PDA

Vollständige Version anzeigen : Aufgaben nach Tag sortieren und in Monatsansicht einfügen


HerbertW
09.03.2015, 08:36
Hallo allerseits,
schön das es Foren wie dieses gibt, wo Neulinge eine Hilfestellung bekommen können.
Zur Zeit beschäftige ich mich mit VBA.
Ich habe zwei Tabellenblätter. Auf dem einen steht eine Monatsübersicht (Tabelle 1) und auf dem anderen eine Übersicht an Aufgaben die zu erledigen sind.
In diesem zweiten Tabellenblatt (Tabelle2) steht auch eine Spalte in welchem Monat und an welchem Tag das zutun ist. Z.b. Spalte F: Januar (=1, bzw. x = alle Monate) und Splate G: Tag 2 (oder 2. Arbeitstag).
Nun würde ich gerne automtisch die Aufgaben den Tagen/Monaten zuordnen und diese in die Monatsübersicht kopieren (und unter den jeweiligen Tag kopieren).

Zwar kann ich schon bestimmte Aufgaben aussuchen und kopieren:

Sub Kopie()
Dim Zeile As Long
Dim ZeileMax As Long
Dim i As Long

With Tabelle2
ZeileMax = .UsedRange.Rows.Count
n = 1

For Zeile = 2 To ZeileMax

If .Cells(Zeile, 6).Value = "x" Or .Cells(Zeile, 6).Value = "1" Then

'sollte in Tabelle1 kopiert werden, habe aber zum Test mal Tabelle3 benutzt
.Rows(Zeile).Copy Destination:=Tabelle3.Rows(n)
n = n + 1

End If
Next Zeile
End With
End Sub

Wie filtere ich diese jedoch nochmal nach dem Tag und wie kopiere ich sie an die richtige Stelle?
Ich weiß das Ganze ließe sich auch per Formeln lösen, aber wegen dem Aufbau des Tabellenblatts, wäre mir VBA lieber.

Ich hänge auch noch ein Minimalbeispiel an damit ihr mich besser versteht.
Ich hoffe ihr könnt mir helfen.
Schonmal danke!

Tinker Bell
09.03.2015, 12:21
Hallo
Für die Weiterverarbeitung ginge es etwas einfacher wenn du die Ausführungszeitpunkte anders definieren würdest.
Erste Ausführung und dann Wiederholungstyp, täglich, wöchentlich oder monatlich).
Ist dies für deine Anwendung möglich?

Gruss,
Tinker Bell

HerbertW
10.03.2015, 07:49
Danke für die schnelle Antwort, Tinker Bell.
Leider, leider kann ich daran garnichts drehen. Die sind fix und können leider auch nicht angepasst warden.

Jedoch wäre z.B. ein Code Wirrwarr kein Problem (da der Code selbst, nachdem das Ganze steht, nicht weiter verändert wird). Auch Schreibarbeit nehme ich gerne in Kauf.

Liebe Grüße,
HerbertW

HerbertW
16.03.2015, 06:47
Hat niemand ne Idee wie man das lösen könnte?
Danke schon mal!

Tinker Bell
16.03.2015, 13:39
Hallo
Will vorab nachfragen ob ich deine Aufgabenstellung auch richtig verstehe.

Auf Tabellenblatt2 hast stehen Aufgaben in Spalte F stehen Anfangsmonat und Wiederholungskadenz. In Spalte G steht der Ausführungstag. In Spalte H wird nach dem kopieren ein x gesetzt.
In Tabelle1 ist ein Jahreskalender und in der Zelle G2 wird der Monatsfilter gesetzt. Die Wochenenden sind Grau schattiert.
Die Aufgaben werden unterhalb des Fälligkeitsdatums eingefügt.

Entspricht dies deinen Vorstellungen?

Gruss,

Tinker Bell

HerbertW
17.03.2015, 11:05
Danke für deine Antwort.

Korrekt. Alles was du gesagt hast ist genau richtig!

Liebe Grüße,
HerbertW

Tinker Bell
17.03.2015, 21:37
Hallo Herbert
Ich bin was am zusammenstellen.
Den Code für die Wiederholungen habe ich erstellt.
Nun bin ich am Code für die Jahreskalender Erstellung.
Da die Aufgaben als neue Zeilen eingefügt werden sollen kann der Kalender nicht per Formel runterziehen erstellt werden. Die Formeln habe ich raus, nun müssen sie noch rüber nach VBA.
Sobald ich was zusammenhängendes habe lade ich es hoch.

Gruss,

Tinker Bell

HerbertW
18.03.2015, 06:50
Wow. Vielen Dank.
Einfach super von dir, danke!

Tinker Bell
18.03.2015, 21:06
Hallo
Ich habe eine Datei wo schon einiges geht.
Für die täglichen Wiederholungen braucht es noch eine Schleife und der Monatsfilter muss auch noch eingebaut werden.
Die restlichen Funktionen gehen in der Demodatei.

Gruss,

Tinker Bell

HerbertW
19.03.2015, 08:35
Was soll ich sagen? Ich bin begeistert!
Vielen lieben Dank für deine Mühe und wunderbare Ausarbeitung.

Ich bin schon auf das Endprodukt gepspannt. Jetzt sieht auf jeden Fall alles Top aus! Danke! Danke! Danke!

Tinker Bell
19.03.2015, 21:15
Hallo Herbert
Habe die restlichen Funktionen auch noch hinbekommen.
Was meinst du?

Gruss,

Tinker Bell

HerbertW
26.03.2015, 06:44
Entschuldige die späte Antwort.
Es ist fantastisch. Vielen, vielen Dank für deine Hilfe!

Super Sache. Ganz großes Lob!

HerbertW
08.04.2015, 10:05
Ich melde mich mal nochmal.
Also es funktioniert wirklich super, vielen Dank.

Sollte ich nun zwei oder drei Spalten übertragen wollen (weil z.b. in der Aufgaben Tabelle noch der Ort und nicht nur die Aufgabe angegeben werden), was müsste ich dann ändern?

Ich weiß nicht wieviel Arbeit es macht, aber ist es auch möglich das Excel / VBA zusätzlich nicht nur nach den Arbeitstagen sucht sondern auch z.B. nach Mittwoch, Dienstag oder nach dem Wochentag (also wenn unter "Frist - VBA Optimiert" z.b "jeden Mittwoch" steht oder "14. des Monats")? Oder ist das nicht möglich - zu kompliziert? Will nicht noch mehr Arbeit aufhalsen.

So oder so, es läuft super! Vielen Dank und ein ganz großes Lob nochmals!

Tinker Bell
08.04.2015, 13:06
Hallo
Grundsätzlich ist dies sicher machbar.
Sehe es mir heute Abend genauer an und melde mich dann.

Gruss,
Tinker Bell

Tinker Bell
08.04.2015, 16:00
Hallo
Wen du mehr als nur die Aufgabe angeben willst sind folgende Anpassungen erforderlich.
Beim Funktionsaufruf musst du noch die gewünschte Zelle anhängen. Also wen der Ort neben der Aufgabe steht, sähe der Aufruf wie folgt aus:
AufgabeEintragen (arrWerte(i)), (.Range("G" & loCounter)), _
(.Range("D" & loCounter)), (.Range("E" & loCounter))

Und in der Funktion AufgabeEintragen sind folgende Anpassungen erforderlich:
Function AufgabeEintragen(strMonat, strATag, strAufgabe, strOrt As String)

und weiter unten:
Else
loFound = objFound.Row
.Rows(loFound + 1).Insert Shift:=xlDown
.Range("E" & loFound + 1) = strAufgabe & "/" & strOrt
.Range("B" & loFound + 1) = datStart
End If

Zu deiner zweiten Frage:
(also wenn unter "Frist - VBA Optimiert" z.b "jeden Mittwoch" steht oder "14. des Monats")

Welches sind den die gewünschten EIngabeformate? Den die könnte man vor dem eigentlichen Makro-Start in die Ausgangseigabeform umwandeln.
Gruss,
Tinker Bell