To-do-Liste: Verschieben erledigter Aufgaben auf neues Blatt
#1
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. Blush


Angehängte Dateien
.xlsx   Testdatei.xlsx (Größe: 34,25 KB / Downloads: 35)
Top
#2
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.





Top
#3
(09.03.2017, 13:38)Ego schrieb: Hallo sonnenschein,

ich hab noch einige Fragen:

Hallo,

 
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.
Top
#4
Hi,

(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. Blush

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:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
   ' 
   ' abgeschlossener Punkt verschieben 
   ' 
   Dim rngBereich                As Range
   Dim rngZelle                  As Range
   Dim loLetzte                  As Long
   ' 
   
   Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten 
   
   Set rngBereich = Intersect(Target, Range("J:J"))
   If Not rngBereich Is Nothing Then
      loLetzte = Sheets("Archiv").Cells(Rows.Count, 1).End(xlUp).Row           ' letzte belegte in Spalte A (1) 
      On Error GoTo ErrorHandler
      For Each rngZelle In rngBereich
         If rngZelle.Value = 1 Then
            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)"
         End If
      Next rngZelle
      
ErrorHandler:
   Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten 
   If Err Then MsgBox Err.Number & "  " & Err.Description  'Fehlercode und Beschreibung anzeigen 
   End If
End Sub
Top
#5
Hallo Rabe, 

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!
Top
#6
Hi,

(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.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste