Anzeige der letzten Änderung des DropDown Menüs

… sowie Automatisches Zurückkehren des Drop Down Menüs in den Ausgangszustand

Praktisches Ziel:
zu Arbeitsbeginn stehen alle Aufgaben auf ‚Neutral’, die letzte Veränderung der Aufgabe ist durch Datum + Uhrzeit vermerkt

Vereinfachte Ausgangslage:
die Arbeitsmappe umfasst 5 Arbeitsblätter. Auf Arbeitsblatt(AB) 2-5 befindet sich jeweils ein Drop-Down Menü mit 2 zur Auswahl stehenden Zuständen (Neutral-Updated) [Grundeinstellung soll ‚Neutral’ sein]
AB 1 dient als Übersicht/Inhaltsangabe und bildet die Zuständen (Neutral-Updated) von AB 2-5 via ‚=’ ab.
Bei jedem wesentlichen Update eines der AB 2-5 wird das Drop-Down Menü manuell auf den Zustand ‚Updated’ gestellt

bis dahin klappt es …

PROBLEM:
Bei Wahl des neuen Zustandes ‚Update’ (=die Handlung), soll das Datum und die Uhrzeit der Handlung automatisch angezeigt werden (in Zelle rechts davon)

Das Datum und Uhrzeit soll bis zum nächsten Update unverändert bleiben (ich möchte nachschlagen können, wann letzte Änderung war), während die 4 Drop-Down Menüs zu bestimmter Zeit (zB täglich um Mitternacht) automatisch wieder in den Ursprungszustand zurückkommen (=„Neutral“)

ich hoffe meine problemstellung klar formuliert zu haben. Ich würde mich riesig über etwaige lösungsvorschläge freuen.

Liebe Grüße,
Klaus

Hallo Klaus.

Das hört sich alles so an, als würdest Du schon VBA in Deiner Datei verwenden. Ist das der Fall?

Du schreibst: DropDown Menüs

Da es ja mehrere DropDown zur Auswahl gibt, würde ich gerne wissen, welchen Du verwendest:

  1. den aus der Symbolleiste Steuerelement-Toolbox
    oder
  2. den aus der Symbolleiste Formular
    oder
  3. Du hast eine benutzerdefinierte Symbolleiste mit DropDown programmiert

zu Arbeitsbeginn stehen alle Aufgaben auf ‚Neutral’

Sofern Du die Datei nach Arbeitsende speicherst und schließt und zu Arbeitsbeginn wieder öffnest, kannst Du das Workbook_Open-Ereignis verwenden, um die DropDown auf „Neutral“ zu stellen.

letzte Veränderung der Aufgabe ist durch Datum + Uhrzeit vermerkt

Sofern Du einen DropDown aus der Symbolleiste Steuerelement-Toolbox hast, kannst Du im Change-Ereignis des DropDown Code schreiben, der das Datum und die Uhrzeit in eine Zelle eines Tabellenblattes schreibt.

Eine persönliche Anmerkung noch: Warum verwendest Du DropDown? Bei ohnehin nur zwei Auswahl-Möglichkeiten würden sich doch Option-Button anbieten.

Viele Grüße
Carsten

Erstmals vielen Dank für deine rasche Hilfe, Carsten!

Das hört sich alles so an, als würdest Du schon VBA in Deiner
Datei verwenden. Ist das der Fall?

nein, ich verwende kein VBA.

Da es ja mehrere DropDown zur Auswahl gibt, würde ich gerne
wissen, welchen Du verwendest:

Ich habe die Drop Downs über die Symbolleiste Daten-Gültigkeit-Liste erstellt.

Sofern Du die Datei nach Arbeitsende speicherst und schließt
und zu Arbeitsbeginn wieder öffnest, kannst Du das
Workbook_Open-Ereignis verwenden, um die DropDown auf
„Neutral“ zu stellen.

wo finde ich das workbook_open-ereignis? - ich vermute, dass das ein VBA Ereignis ist?
ein punkt der noch wichtig ist anzumerken: an diesem Dokument sollen mehrere Personen auch gleich zeitig arbeiten können(Arbeitsmappe wird mehrere Mal tägich geöffnet und geschlossen). insofern soll DropDown Menü nur bei Arbeitsbeginn in Ausgangszustand ‚Neutral‘ zurückgehen.

Sofern Du einen DropDown aus der Symbolleiste
Steuerelement-Toolbox hast, kannst Du im Change-Ereignis des
DropDown Code schreiben, der das Datum und die Uhrzeit in eine
Zelle eines Tabellenblattes schreibt.

bei dem Change-Ereignis handelt es sich um VBA? wäre die Datums/Uhrzeitangabe aucch ohne VBA realisierbar?

Eine persönliche Anmerkung noch: Warum verwendest Du DropDown?
Bei ohnehin nur zwei Auswahl-Möglichkeiten würden sich doch
Option-Button anbieten.

Ich möchte mir Spielraum für mögliche Erweiterung der Auswahlmöglichkeiten lasssen.

Danke + Liebe Grüße,
Klaus

Daten-Gültigkeit-Liste erstellt.

wo finde ich das workbook_open-ereignis?

Hi Klaus,

Beispiel ist darauf bezogen daß du in Blatt 2 -5 das Gültigkeitsdropdown jeweils in Zelle E7 hast, die Liste ist:
Neutral;Geändert

In Blatt 1 H1 ist eine Hilfszelle für Vba. Kannste wie E7 im Code beliebig anpassen, ggfs Schriftfarbe weiß bei H1.

Dann in Blatt 1:

1 Blatt Zustand wann
2 Tabelle2 =Tabelle2!$E$7 =WENN(Tabelle2!$E$7="Geändert";JETZT();"")
3 Tabelle3 =Tabelle3!$E$7 =WENN(Tabelle3!$E$7="Geändert";JETZT();"")
4 Tabelle4 =Tabelle4!$E$7 =WENN(Tabelle4!$E$7="Geändert";JETZT();"")
5 Tabelle5 =Tabelle5!$E$7 =WENN(Tabelle5!$E$7="Geändert";JETZT();"")

Für Vba:
Alt+F11, Doppelklick auf „DieseArbeitsmappe“, Code einfügen, ggfs. anpassen, Editor schließen.

Option Explicit
Private Sub Workbook\_Open()
Dim N As Byte
If Worksheets(1).Range("H1") = Date Then Exit Sub
For N = 2 To 5
 Worksheets(N).Range("E7").Value = "Neutral"
Next N
Worksheets(1).Range("H1") = Date
End Sub

Gruß
Reinhard

Super. Danke vielmals Reinhard.

Beispiel ist darauf bezogen daß du in Blatt 2 -5 das
Gültigkeitsdropdown jeweils in Zelle E7 hast, die Liste ist:
Neutral;Geändert

Hallo Reinhard,
ich habe noch 2 Fragen zu deiner Lösung.

In Blatt 1 H1 ist eine Hilfszelle für Vba. Kannste wie E7 im
Code beliebig anpassen, ggfs Schriftfarbe weiß bei H1.

was muss man in die Hilfszelle H1 eintragen? oder bleibt sie leer?

Für Vba:
Alt+F11, Doppelklick auf „DieseArbeitsmappe“, Code einfügen,
ggfs. anpassen, Editor schließen.

Option Explicit
Private Sub Workbook_Open()
Dim N As Byte
If Worksheets(1).Range(„H1“) = Date Then Exit Sub
For N = 2 To 5
Worksheets(N).Range(„E7“).Value = „Neutral“
Next N
Worksheets(1).Range(„H1“) = Date
End Sub

und wenn sich mein Überblick aus jeweils dem ersten Arbeitsblatt anderer Arbeitsmappen speist. wie muss der Code abgeändert werden?

Vielen Dank,
Klaus

Hi Klaus,

In Blatt 1 H1 ist eine Hilfszelle für Vba. Kannste wie E7 im
Code beliebig anpassen, ggfs Schriftfarbe weiß bei H1.

was muss man in die Hilfszelle H1 eintragen? oder bleibt sie
leer?

H1 ist die Merkzelle für den Code damit er weiss ob die Datei an diesem Tage schon geöffnet wurde. Steht das aktuelle Datum drin, weiß der Code daß die Datei schon an dem Tage geöffnet wurde und macht nichts.
Wenn nicht, schreibt er das Datum rein und setzt auf „Neutral“

und wenn sich mein Überblick aus jeweils dem ersten
Arbeitsblatt anderer Arbeitsmappen speist. wie muss der Code
abgeändert werden?

Der Code kümmert sich nur um das „Neutral“-Setzen.
Die „Einspeisung“ erfolgt durch übliche Excel-Verknüpfung, ggfs. zu einer anderen Mappe
=[Mappe2.xls]Tabelle1!xy

Gruß
Reinhard

Vielen Dank,
Klaus

Hallo Reinhard,

hat alles bestens funtioniert :smile:Danke!

Die Zurücksetzung des Drop Down Menüs hat auch geklappt.

Jetzt steh ich vor dem problem, dass ich einen Button in meine arbeitsmappe integrieren will.
(Grund: DropDown Menüs sind in unregelmäßigen Zeiträumen auf „Neutral “ zu stellen)
************ meine problembeschreibung ***********************
Einrichten eines „Zürcksetzen“ Buttons
in Arbeitsblatt 1 der Arbeitsmappe 1 in Zelle G1
, der mir DropDown Menüs bei anklicken auf „Neutral“ setzt.

Die DropDown Menüs befinden sich
in Arbeitsblatt 1 und 2 der Arbeitsmappe2
in Arbeitsblatt 1 und 2 der Arbeitsmappe3

**********************************************

vielen Dank + lg
Klaus

Jetzt steh ich vor dem problem, dass ich einen Button in meine
arbeitsmappe integrieren will.
Einrichten eines „Zürcksetzen“ Buttons
in Arbeitsblatt 1 der Arbeitsmappe 1 in Zelle G1
, der mir DropDown Menüs bei anklicken auf „Neutral“ setzt.
Die DropDown Menüs befinden sich
in Arbeitsblatt 1 und 2 der Arbeitsmappe2
in Arbeitsblatt 1 und 2 der Arbeitsmappe3

Hi Klaus,

in „DieseArbeitsmappe“:

Option Explicit
Private Sub Workbook\_Open()
Dim N As Byte
With ThisWorkbook
 If .Worksheets(1).Range("H1") = Date Then Exit Sub
 For N = 2 To 5
 Call Zurücksetzen(.Name, .Worksheets(N).Name, "E7")
 Next N
 .Worksheets(1).Range("H1") = Date
End With
End Sub

In „Modul1“ (wenn nicht vorhanden, Einfügen–Modul)
Option Explicit
Option Base 1
Sub Neutral()
Dim Liste
Liste = Array(„Tabelle1“, „Tabelle2“)
Call Zurücksetzen(„Arbeitsmappe1.xls“, Liste, „E7“)
Call Zurücksetzen(„Arbeitsmappe2.xls“, Liste, „E7“)
End Sub

Sub Zurücksetzen(Mappe, Liste, Zelle)
Dim N As Byte
For N = 1 To UBound(Liste)
 Workbooks(Mappe).Worksheets(Liste(N)).Range(Zelle).Value = "Neutral"
Next N
End Sub

Das Makro „Neutral“ einem Button aus symbolleiste „Formular“ zuweisen.
Gruß
Reinhard

Hallo Reinhard,

habe Teile deines Codes in VBA übernommen. den nachfolgenden Teil des Codes habe ich nicht eingefügt, da die automatische Rückstellungsfunktion momentan nicht gebraucht wird. Als Fehlermeldung wird mir nun aber runtime-error ‚13‘ angezeigt.

in „DieseArbeitsmappe“:

Option Explicit
Private Sub Workbook_Open()
Dim N As Byte
With ThisWorkbook
If .Worksheets(1).Range(„H1“) = Date Then Exit Sub
For N = 2 To 5
Call Zurücksetzen(.Name, .Worksheets(N).Name, „E7“)
Next N
.Worksheets(1).Range(„H1“) = Date
End With
End Sub

Zuerst habe ich deinen Code für das Zurücksetzen in angepasster Form eingefügt (ich habe den VBA Code leicht verändert, da ich eine englische Excel version habe. dieser Code befindet sich nun in Modul 1).
Als Fehlermeldung wird mir nun aber runtime-error ‚13‘ angezeigt, sobald ich auf den „Reset“ Button drücke.

adaptierter VBA Code für das Zurücksetzen:

Option Explicit
Option Base 1
Sub Neutral()
Dim List
List = Array(„Worksheet1“, „Worksheet2“)
Call Reset(„Dateipfad des Workbooks“, „List“, „G4“)
End Sub

Sub Reset(Workbook, List, Cell)
Dim N As Byte
For N = 1 To UBound(List)
Workbooks(„Dateipfad des Workbooks“).Worksheets(List(N)).Range(Cell).Value = „NOT UPDATED“
Next N
End Sub

ich habe dabei die Ausfdrücke in den Klammern übersetzt. ist das zulässig?
muss man begriffe innerhalb der Klammern wie Reset(Workbook, List, Cell) unter „“ stellen?
oder muss ich den ersten Teil deines VBA Codes (date) doch einfügen?

Danke,
Klaus

Das Makro „Neutral“ einem Button aus symbolleiste „Formular“
zuweisen.
Gruß
Reinhard