09.03.2017, 12:39 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2017, 12:39 von hrsonnenschein.)
Hallo zusammen,
ich bin gerade dabei, meine to-do-Liste etwas "aufzuhübschen" und habe in einem Muster gesehen, wie erledigte Aufgaben per Knopfdruck verschoben werden (aus dem aktuellen Arbeitsblatt gelöscht und auf ein Archiv-Arbeitsblatt kopiert werden). Ich habe von Makros leider keine Ahnung und jetzt einige Zeit erfolglos versucht, mir das anhand von Foren-Beiträgen für andere, ähnliche Zwecke zu erschließen und auf meinen Tabellenaufbau anzupassen. Leider bekomme ich es einfach nicht hin, von daher würde ich mich sehr freuen, wenn sich jemand bereiterklären würde, mir das einzubauen. Eine Beispieldatei ist angehängt. Geplant ist, dass Projekte, deren Status 100% erreicht, aus der LOP ins Archiv fliegen (ohne zusätzlichen Button oder so, einfach sobald der Prozentwert in das entsprechende Feld eingegeben wird).
Meine Liste ist augenblicklich so formatiert, dass für überfällige Aufgaben das Datum und die Restlaufzeit rot markiert werden. Falls es ohne größeren Aufwand so darstellbar ist, dass im Archiv die erledigten Aufgaben komplett, d.h. die ganze Zeile, einheitlich dunkelgrau geschrieben werden, fände ich das aus ästhetischen Gesichtspunkten schöner.
Da ich aber eh schon so schamlos um Hilfe bitte, will ich nicht unverschämt werden - ich freue mich über jeden, der mir hier unter die Arme greifen kann! Tausend Dank im Voraus.
09.03.2017, 13:38 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2017, 13:38 von Ego.)
Hallo sonnenschein,
ich hab noch einige Fragen:
1) Warum? In einer benannten Tabelle kann man doch die erledigten Punkte einfach ausfiltern. Man muss dann beim Auswerten der Punkte nicht zwei Listen bearbeiten. (Regel: "Gleiche Daten gehören in eine und nur eine Tabelle.")
2) Was soll kopiert werden? a) Werte?, Formeln?, Formatierungen? (ohne bedingte Formatierungen) und b)welcher Bereich?
3) Warum ist im Archiv schon eine Nummer vorgegeben? (siehe 2)
4) Warum gibt es im Archiv die Spalte Tage? (siehe 2) Ich nehme an, dass hier die Tage bis zum Termin ausgewiesen werden. Wofür benötige ich die Tage für erledigte Punkte? Ich könnte mir eher vorstellen dass für Auswertungen ein Erledigungstermin interesssant wäre.
5) Wie wird er Status geändert? Wird er manuell gepflegt oder steht hier eine Formel?
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
danke, dass Du Dich auch inhaltlich mit meinem Anliegen auseinandersetzt. Ich geh mal eben der Reihe nach durch:
1) Warum? In einer benannten Tabelle kann man doch die erledigten Punkte einfach ausfiltern. Man muss dann beim Auswerten der Punkte nicht zwei Listen bearbeiten. (Regel: "Gleiche Daten gehören in eine und nur eine Tabelle.") Die Regel macht sicher Sinn, vielleicht ist es einfach Geschmackssache. Ich springe lieber zwischen Tabellenblättern als Filtern.
2) Was soll kopiert werden? a) Werte?, Formeln?, Formatierungen? (ohne bedingte Formatierungen) und b)welcher Bereich? Die ganze Zeile, die Werte.
3) Warum ist im Archiv schon eine Nummer vorgegeben? (siehe 2) Weil ich beim Kopieren/Löschen nicht nachgedacht habe. Kann natürlich weg.
4) Warum gibt es im Archiv die Spalte Tage? (siehe 2) Ich nehme an, dass hier die Tage bis zum Termin ausgewiesen werden. Wofür benötige ich die Tage für erledigte Punkte? Ich könnte mir eher vorstellen dass für Auswertungen ein Erledigungstermin interesssant wäre. Die würde einfach ignoriert werden; ich habe einfach angenommen, dass es leichter ist, die Zeilen 1:1 zu verschieben als noch auf geänderte Spaltenzusammensetzungen Rücksicht nehmen zu müssen. Stattdessen das Erledigungsdatum einzutragen wäre natürlich toller Luxus, aber davon verstehe ich ja noch weniger und will nicht mehr Aufwand an die Community „outsourcen“ als ohnehin schon. Ich hätte gut Lust, mich da tiefer ins Thema reinzuknien, aber leider brauche ich meine Liste schon früher :D
5) Wie wird er Status geändert? Wird er manuell gepflegt oder steht hier eine Formel? Per Hand.
(09.03.2017, 12:39)hrsonnenschein schrieb: Meine Liste ist augenblicklich so formatiert, dass für überfällige Aufgaben das Datum und die Restlaufzeit rot markiert werden. Falls es ohne größeren Aufwand so darstellbar ist, dass im Archiv die erledigten Aufgaben komplett, d.h. die ganze Zeile, einheitlich dunkelgrau geschrieben werden, fände ich das aus ästhetischen Gesichtspunkten schöner.
Da ich aber eh schon so schamlos um Hilfe bitte, will ich nicht unverschämt werden - ich freue mich über jeden, der mir hier unter die Arme greifen kann! Tausend Dank im Voraus.
Wenn Du in Deiner Datei mal die ganzen Zeilen der Tabellen löschst (außer außer 1-4), den Autofilter ausschaltest, dann aus dem Bereich A3:J4 eine intelligente Tabelle (STRG-L) machst, dann kannst Du folgendes Makro verwenden:
OptionExplicitPrivateSub Worksheet_Change(ByVal Target As Range)
' ' abgeschlossener Punkt verschieben ' Dim rngBereich As Range
Dim rngZelle As Range
Dim loLetzte AsLong'
Application.ScreenUpdating = False'Bildschirmaktualisierung ausschalten Set rngBereich = Intersect(Target, Range("J:J"))
IfNot rngBereich IsNothingThen
loLetzte = Sheets("Archiv").Cells(Rows.Count, 1).End(xlUp).Row ' letzte belegte in Spalte A (1) OnErrorGoTo ErrorHandler
ForEach rngZelle In rngBereich
If rngZelle.Value = 1Then
Range("A" & Target.Row & ":J" & Target.Row).Copy
Sheets("Archiv").Range("A" & loLetzte + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A" & Target.Row & ":J" & Target.Row).ClearContents
Range("A" & Target.Row).FormulaR1C1 = "=ROW(RC1)-ROW(R3C1)"EndIfNext rngZelle
ErrorHandler:
Application.ScreenUpdating = True'Bildschirmaktualisierung wieder einschalten If Err Then MsgBox Err.Number & " " & Err.Description 'Fehlercode und Beschreibung anzeigen EndIfEndSub
das funktioniert bei mir leider nur so halb - die Zeilen werden zwar auf ein anderes Blatt übertragen, aber dafür passt dann die Hintergrundfarbe der Zeilen im ersten Arbeitsblatt nicht mehr.
Gibt es noch eine andere Lösung? Ego? Danke für eure Hilfe!
(10.03.2017, 10:17)hrsonnenschein schrieb: das funktioniert bei mir leider nur so halb - die Zeilen werden zwar auf ein anderes Blatt übertragen, aber dafür passt dann die Hintergrundfarbe der Zeilen im ersten Arbeitsblatt nicht mehr.
durch das Makro wird an den Zeilen im ersten Blatt keine Formatierung geändert.