Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

Makro jeden Montag ausführen, allerdings nur 1mal!

Makro jeden Montag ausführen, allerdings nur 1mal!
02.02.2015 09:48:27
Herman
Hallo,
wie im Titel beschrieben, muss beim öffnen einer Arbeitsmappe überprüft werden ob heute Montag ist, wenn ja, soll ein Makro aufgerufen werden. Allerdings soll dieses Makro nur beim erstmaligen öffnen am Montag ausgeführt werden und dann nicht mehr. Dies soll aber natürlich fortlaufend, jeden Montag so geschehen.
Da ich mich nicht als VBA-Profi bezeichnen würde, habe ich jetzt folgenden Code geschrieben. Würde dies so funktionieren, oder ist irgendwo ein Denkfehler drin?
Es wird zuerst überprüft ob heute Montag ist.
Wenn ja, wird überprüft ob in der Zelle P1 das heutige Datum drin steht (weil das Script ja nur 1 mal pro Montag ausgeführt werden soll)
Wenn ja, dann ist die Überprüfung damit beendet.
Wenn nicht, dann rufe das Makro "Copy" auf und schreibe in P1 das heutige Datum.
Bei einem ersten Testlauf hat es funktioniert. Da ich aber nächsten Montag nicht in der Firma bin, das Makro aber funktionieren muss, wollte ich euch VBA-Excel-Profis fragen, ob irgendwo ein Denkfehler drin ist oder der Code nach meinen Vorstellung funktionieren wird.
Danke

Private Sub Workbook_Open()
If Weekday(Now, vbMonday) = 1 Then
If Not Sheets("Archiv").Range("P1").Value = Date Then
Call Copy
Sheets("Archiv").Range("P1").Value = Date
End If
End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rückfrage
02.02.2015 10:07:55
Daniel
HI
wenn die Datei Montags nicht geöffnet wird sondern erst am Dienstag oder Mittwoch (Feiertag, Urlaub, Krankheit), soll dann das Makro trotzdem ausgeführt werden, oder soll bis zum nächsten Montag gewartet werden?
Gruß Daniel

Makro jeden Montag ausführen, allerdings nur 1mal!
02.02.2015 10:10:13
Hajo_Zi
Du möchtest also den Copy Befehl von Excel mit deiner eignem Makro überschreiben. Ich würde niemals einen Befehl als Makroname nehmen der in VBA schon ein Befehl ist.
Das Makro ist sonst in Ordnung.
Ich habe es nicht getestet.
Ich hätte
If Weekday(Now, 2)=1 Then
geschrieben.

Anzeige
AW: Makro jeden Montag ausführen, allerdings nur 1mal!
02.02.2015 10:11:36
Christian
Hallo Herman,
ja, sollte passen - allerdings...
- musst du das Workboook noch speichern.
- und dir ggf. überlegen, was passiert soll, wenn die Datei erst am Dienstag geöffnet wird.
Gruß
Christian

AW: Makro jeden Montag ausführen, allerdings nur 1mal!
02.02.2015 10:22:45
Herman
Danke für die Antworten und Hinweise!
Ich werde den Makronamen "Copy" abändern.
Die Datei wird definitiv jeden Tag mehrmals von unterschiedlichen Personen geöffnet. Daher spielen die "Variablen" Krankheit und Urlaub keine Rolle - lediglich an einem Feiertag ist niemand in der Produktion der die Datei öffnen wird. Lässt sich dies mit einfachen Mitteln berücksichtigen? Mir würde hierzu keine Lösung einfallen. Hat jemand eine Idee?
PS: Falls das Berücksichtigen von Feiertagen/Betriebsferien allerdings eher komplizierter werden würde, ist dies auch vernachlässigbar
Vielen Dank

Anzeige
AW: Makro jeden Montag ausführen, allerdings nur 1mal!
02.02.2015 10:34:25
Herman
Kleines Update: Es wurde sich darauf geeinigt, dass das Makro an so einem Ausnahmefall (Feiertag) manuell über einen Button ausgeführt wird. Danke, Thema ist damit erledigt

AW: Makro jeden Montag ausführen, allerdings nur 1mal!
02.02.2015 10:50:21
Daniel
Hi
die Lösung ist relativ einfach:
schreibe beim Ausführen des Makros den Werte JAHR + KALENDERWOCHE in die Zelle.
Prüfe beim Öffnen der Datei, ob der Wert JAHR + KALENDERWOCHE in der Zelle kleiner ist als der aktuelle Wert und wenn ja, dann starte das Makro, sonst nicht.
Damit kannst du sicherstellen, dass das Makro pro Woche einmal beim ersten Öffnen innerhalb dieser Woche ausgeführt wird.
den Wert Jahr+Kalenderwoche erstellst du so:
= Year(Date)*100 + Worksheetfunction.Weeknum(Date, 21)
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige