Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sequenz mit Zeitverzögerung

Sequenz mit Zeitverzögerung
03.10.2023 10:20:23
Haderlein
Hallo Zusammen,

in der Zelle A2 ist eine Dropdown Auswahl mit den Jahreszahlen wie 2023, 2024 usw. Ab der Zelle I3 beginnt eine Sequenz, um abhängig von der aktuellen Jahreszahl, das Datum und in der Zelle darunter den dazugehörigen Wochentag zu ermitteln. Dies nutze ich um eine Urlaubsplanung zu erstellen.
Wenn nun der User die Jahreszahl ändert, wird auch ein Makro gestartet, welches die Urlaubstage in ein separates Blatt speichert. Nun ist so, dass wenn der User die Jahreszahl ändert, die Sequenz so schnell auslöst, dass das Makro natürlich die neuen Daten verwendet, da ja bereits durch die Sequenz die neuen Tage drin stehen.
Also zum Beispiel: Der 10.12.2024 ist ein Montag, aktuelle Jahreszahl 2024. Nun ändert der User auf 2023, dann speichert das Makro den 10.12.2023 ab, ist aber ein Sonntag.
Nun die Frage: Wie kriege ich es hin, dass ich bei der Sequenz eine Zeitverzögerung drin habe, damit das Makro Zeit hat, die Urlaubstage abzuspeichern?
Für das jeweilige Datum schaut die Sequenz in der Zelle wie folgt aus:
=SEQUENZ(;DATUM($A$2;12;31)-DATUM($A$2;1;1)+1;DATUM($A$2;1;1))
Danke für eure Hilfe.
Vielen Dank.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sequenz mit Zeitverzögerung
03.10.2023 10:28:33
Haderlein
Ergänzung: Leider gibt es für Excel 2016 die Funktion =Warten(5) nicht (5 = 5 Sekunden). Welche Alternative hätte ich nun?
AW: Sequenz mit Zeitverzögerung
03.10.2023 13:26:26
Daniel
Hi

Warten hilft da nichts, das dauert nur länger, ändert aber nicht am Ablauf.
Wenn du hier über das Change-Eventmakro gehst, dann ist die Reihenfolge festgelegt:
1. Zellwert ändert sich
2. Abhängige Formen werden neu berechnet
3. Change-Makro wird ausgeführt.

Mögliche ansätze um das Problem zu lösen wären folgende:

a) automatisch Neuberechnung aus
Du stellst um auf manuelle Neuberechnung der Formeln. Wenn der Zellwert geändert wird, bleiben die abhängigen Formeln auf dem alten Stand, du könntest jetzt die Einträge kopieren und danach erst die Formeln aktualisieren (application.Calculate)
Hier solltest du aber prüfen, ab das nicht unerwünschte Auswirkungen auf die sonstige Funktion deiner Datei hat.

b) Eingabe rückgangig machen
Du sichert die aktuelle Jahreszahl in einer Variablen und führst den Befehl Application.Undo aus. Damit hast du wieder den vorherigen Stand und kannst die Eingaben kopieren. Danach schreibst dann wieder das gespeicherte Jahr in die Zelle.
Dass du hier Application.EnableEvents gekonnt einsetzten musst, sollte klar sein.

c) Combobox statt Eingabeüberprüfung
Lass den Anwender die Jahresauswahl in einer ActiveX-Combobox machen und führe das Makro in deren Click-Event aus.
Dann kannst du im Code zuerst die Urlaubsplanung kopieren, bevor du das neue Jahr in die entsprechende Zelle schreibst.

Gruß Daniel
Anzeige
AW: Sequenz mit Zeitverzögerung
03.10.2023 20:19:45
Haderlein
Hallo Daniel,
vielen Dank für die Vorschläge.

Ich finde den Vorschlag b) tatsächlich den Besten. Allerdings bin ich etwas planlos, wie ich das nun im bestehenden Code einbaue.
Ich habe versucht mir eine Beispieldatei aufzubauen (in Zelle C3 steht die Dropdownauswahl mit der Jahreszahl, in E3 steht E3=C3)).

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address = "$C$3" Then
Application.EnableEvents = True
Application.Undo
Jahr = Cells(3, 5).Value
MsgBox Jahr
Application.EnableEvents = False

End If

End Sub

Vielen Dank

Anzeige
AW: Sequenz mit Zeitverzögerung
04.10.2023 09:54:36
daniel
Hi
Möglichkeit b) spielt sich allein im Change-Event ab, also nachdem du die Zelle mit der Jahreszahl geändert hast.

dim Speicher as Variant

If Target.Address(0, 0) = "C3" Then
Speicher = Target.Value
Application.EnableEvents = false
Application.Undo
...
hier der Code zum kopieren und sichern der Urlaubsplanung
...
Target.Value = Speicher
Application.EnableEvents = True
end if


eine weitere Möglichkeit wäre, dass du im SelectionChange einfach die automatische Neuberechung ausschaltest, wenn die Eingabezelle angesprungen wird. dann bleiben die Abhängigen Zellen zuerst auf dem alten Wert und du kannst im Change-Event die Daten sichern.
also im Prinzip das:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Application
If Target.Address(0, 0) = "C3" Then
.Calculation = xlCalculationManual
Else
If .Calculation > xlCalculationAutomatic Then .Calculation = xlCalculationAutomatic
End If
End With
End Sub

Gruß Daniel
Anzeige
AW: Sequenz mit Zeitverzögerung
04.10.2023 15:13:07
Haderlein
Hallo Daniel,

super, beide Vorschläge funktionieren, klasse :) Danke. Problem gelöst :):)
AW: SEQUENZ() in XL2016? In meiner gibts die nicht owT
03.10.2023 11:14:12
neopa C
Gruß Werner
.. , - ...
AW: SEQUENZ() in XL2016? In meiner gibts die nicht owT
03.10.2023 11:30:20
Haderlein
Hi Werner,

entschuldige, ich verstehe deine Rückmeldung nicht ?
Grüße
AW: ich stell den thread wieder offen ...
03.10.2023 11:44:03
neopa C
Hallo Haderlein,

... ich wollte mit meinem Kurzbeitrag nur anmerken, daß es zumindest in meiner XL2016 (welche Du auch als Deine Excelversion angegeben hast) keine Funktion SEQUENZ() gibt, die Du in Deiner Formel eingesetzt hast. Und potentielle Helfer, die eine neuere XL-Version haben, sollten von Dir zumindest die Information erhalten, welche XL-Version Du wirklich einsetzt.

Gruß Werner
.. , - ...
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige