Ergebnis 1 bis 8 von 8
  1. #1
    Registriert seit
    16.01.2020
    Beiträge
    5

    Excel - Datum äandern nach Statusänderung

    Guten Abend zusammen,

    bisher war ich immer nur stiller Mitleser hier im Forum und in Sachen Excel konnte man mir hier schon sehr viel weiterhelfen.

    Nun stehe ich aber vor einer Herausforderung bei der ich trotz Stundenlangen Lesen sowohl hier als auch auf diversen anderen Seiten, bisher ohne Erfolg.

    Für die Firma für die ich Arbeite fertige ich zur Zeit viele neue Excel Reporting Tools um das Arbeiten zu erleichtern.

    Zur Zeit bin ich dabei, eine "To-Do" Liste zu erstellen, bei der unser Projektmanager die Möglichkeit hat, für die Verschiedenen Teams Aufgaben nach Priorität zu erstellen.

    Was ich bisher erreichen konnte:

    Bei einem neuen Eintrag wird in Spalte A Automatisch die Fortlaufende Nummer eingefügt, in Spalte B das Datum, in Spalte C dank eines Makro-4 Code der Windows-Nutzername, D, E & F sind für Team, Priorität und das Fälligkeitsdatum da, in Spalte G kommt der Aufgabentext rein und ich Spalte H steht der Status dann Automatisch auf "Open".

    Was möchte ich nun realisieren und hoffe auf eure Hilfe?

    Wenn in Spalte H der Status von "Open" auf "Done" gesetzt wird, soll in Spalte I das Datum gesetzt werden und in Spalte J der Windows-Nutzername.

    Kann man hier noch mit einer Formel Arbeiten oder ist VBA die bessere Alternative?

    In beiden Fällen hoffe ich auf eure Hilfe, manchmal sieht man vor lauter Bäumen den Wald nicht mehr.

    Vielen Dank im Voraus

    Alex

  2. #2
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    237

    VBA-Lösung

    Hallo Alex,

    ich würde hier eine VBA-Lösung vorschlagen. Der Grund ist: Wenn du mit Formeln wie HEUTE() oder DATUM() arbeitest, wird der Eintrag immer wieder aktualisiert. In der Zelle steht dann immer wieder das aktualle Datum und nicht das, an dem die Spalte H auf "Done" gesetzt wurde.
    Hier also meine VBA-Lösung:
    Füge in den Code-Bereich des Tabellenblattes folgenden Code ein:

    Code:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim ze As Long
        
        If Target.Column <> 8 Then Exit Sub
        ze = Target.Row
        Select Case LCase(Target)
            Case "open"
                Range("I" & ze & ":J" & ze).ClearContents
            Case "done"
                Range("I" & ze) = Now
                Range("J" & ze) = Application.UserName
        End Select
    End Sub
    Immer dann wenn sich in Spalte H etwas ändert, läuft der Code los. Wenn dann in Spalte H "Open" steht, werden in dieser Zeile die Spalten I und J gelöscht. Steht in Spalte H "Done", dann wird in Spalte I das aktuelle Datum und in Spalte J der Benutzername eingetragen. Groß- und Kleinschreibung sind egal; "done" und "DoNe" oder "DONE" sind also gleich.
    Probier es mal aus und melde dich, wenn es Fragen oder Probleme gibt.

    Grüße, Andreas

  3. #3
    Registriert seit
    16.01.2020
    Beiträge
    5
    Guten Abend Andreas,

    vielen Dank für deine Antwort.

    Gleich morgen werde ich den Code ausprobieren und dir eine Rückmeldung geben.

    Ich wünsche dir einen angenehmen Abend.

    Grüße
    Alex

  4. #4
    Registriert seit
    16.01.2020
    Beiträge
    5
    Guten Morgen Andreas,

    ich habe den Code soeben eingebunden und getestet.

    Allerdings ändert sich in den Spalten I und J nichts, wenn der Status in H auf Done gesetzt wird.

    Ich hätte in diesem Fall vielleicht erwähnen sollen, dass der Status mithilfe eines Dropdown Menüs geändert wird?

    Liebe Grüße
    Alex

  5. #5
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    237
    Gute Morgen Alex,

    wie vertraut bist du mit VBA?
    Ein paar Bedingungen:
    Wenn die Datei bisher (ohne Makro) als xlsx gespeichert war, musst du sie jetzt als xlsm speichern, damit die Makros mit gespeichert werden.
    Makros müssen in Excel erlaubt sein (Datei - Optionen - Trust Center - Einstellungen für das Trust Center - Makroeinstellungen - Alle Makros aktivieren.
    Der Code darf nicht in einem Standardmodul stehen sondern muss im Codebereich für das Tabellenblatt stehen.

    Das mit der Dropdown-Liste habe ich ausprobiert. Es funktoniert auch damit.

    Grüße, Andreas
    Angehängte Grafiken Angehängte Grafiken

  6. #6
    Registriert seit
    16.01.2020
    Beiträge
    5
    Hallo nochmal Andreas,

    ich bin den Code nochmal durchgegangen und habe ein Fehler gefunden den ich selbst verursacht habe.

    Nach Korrektur funktioniert nun der Code so wie er soll.

    Ich danke dir vielmals für deine Hilfe

    Liebe Grüße

    Alex

  7. #7
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    237
    ... und verrätst du uns denn auch, wo der Fehler war?

  8. #8
    Registriert seit
    16.01.2020
    Beiträge
    5
    Guten Morgen Andreas,

    da ich mit mehreren Rechnern arbeite habe ich dein Code einfach nur abgetippt.

    If Target.Column <> 8 Then Exit Sub

    Anstelle einer 8 habe ich eine 7 verwendet.

    Nachdem ich dies geändert habe, Funktionierte der Code.

    Also lag der Fehler eindeutig auf meiner Seite.

    Liebe Grüße
    Alex

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •