Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1448to1452
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

MSG nach jeder Stunde anzeigen

MSG nach jeder Stunde anzeigen
21.09.2015 12:44:52
Salvadore
Hallo!
Ist es im VBA möglich, dass zu jeder vollen Stunde oder noch besser wäre alle 45min eine MSG-Box kommt die als Information ausgibt: "Bitte Werte eingeben!"
Also so eine Art Hinweis, dass man etwas eingeben muss.
Ich habe ein Zeitmakro bereits laufen, wovon ich eventuell die Zeitabfrage machen könnte. Aber nur wie?
geht das?
Danke Marco

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wenn schon Code da ist, zeig ihn! (owT)
21.09.2015 13:05:23
EtoPHG

AW: MSG nach jeder Stunde anzeigen
21.09.2015 13:17:52
Daniel
Hi
im Prinzip so:
1. in einem allgemeinen Modul:
Option Explicit
Public Nächste as Date
Sub Hinweis()
msgbox "Bitte Wert eingeben"
Nächste = Now + TimeSerial(0, 45 , 0)
Application.OnTime Nächste, "Hinweis"
End Sub
2. im Modul DieseArbeitsmappe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'--- aufruf zurücknehmen, wenn Datei geschlossen wird.
If Now > Nächste Then Application.OnTime Nächste, "Hinweis", Schedule:=False
End Sub
Private Sub Workbook_Open()
'--- automatischer erster aufruf beim Öffnen der Datei
Application.Run "Hinweis"
End Sub
Gruß Daniel

Anzeige
AW: MSG nach jeder Stunde anzeigen
21.09.2015 13:56:00
Salvadore
Danke dir schon mal rechtherzlich für die Hilfe.
Es wird so aber nicht funktionieren, wie ich es mir vorstelle. Ich hab mich da etwas falsch ausgedrückt.
Ich hätte gerne die Meldung um 12:45 dann wieder um 13:45 dann wieder um 14:45......
Also nicht wenn ich die File öffne, sonder wirklich Uhrzeitbezogen.
Gruß marco

AW: MSG nach jeder Stunde anzeigen
21.09.2015 14:05:57
Daniel
Hi
wenn die Meldung immer um "viertel vor" kommen soll, dann probier mal folgenden Code um die nächste Startzeit zu ermitteln:
Nächste = date + Timeserial(Hour(now) - (Minute(now) >= 45), 45 , 0)
kann dann auch im WorkbookOpen-event eingesetzt werden:
Private Sub Workbook_Open()
'--- automatischer erster aufruf beim Öffnen der Datei
Nächste = date + Timeserial(Hour(now) - (Minute(now) >= 45), 45 , 0)
Application.OnTime Nächste, "Hinweis"
End Sub
Gruß Daniel

Anzeige
AW: MSG nach jeder Stunde anzeigen
21.09.2015 20:02:11
Salvadore
Das funktioniert Top!
Danke dir vielmals für die Hilfe.
Die Info is aber doch etwas klein. Es sollte nämlich ein wichtiger Hinweis sein. Gibt es da eine möglichkeit die Msg-Box etwas größer zu machen. Mit Rufzeichen? Oder das sogar vl etwas blinkt so in Richtung Achtung Achtung. Es sollte Aufmerksamkeit erzeugen.
Gibs da vl was?
Danke Marco

AW: MSG nach jeder Stunde anzeigen
21.09.2015 20:24:13
Daniel
HI
du kannst die Msgbox noch etwas aufpeppen mit
Msgbox "Dein Text", vbCritical

dann bekommt sie ein Ausrufzeichen und piept einmal beim erscheinen (so wie ne Windows-Meldung)
grösser kannst du sie nur bekommen, in dem du mehr Text (auch Leerzeichen oder -zeilen) anzeigen lässt.
wenns mehr sein soll, müsstest du eine Userform erstellen, und diese anzeigen lassen.
Da hast du dann mehr gestaltungsmöglichkeiten und du kannst die Userform auch nach einer bestimmten Zeit auch wieder verschwinden lassen, während die einfache Msgbox immer wartet, bis OK gedrückt wurde.
Gruß Daniel

Anzeige
AW: MSG nach jeder Stunde anzeigen
22.09.2015 07:37:29
Salvadore
Vielen Dank!
Würde das auch funktionieren, dass das Userform um xx:45 erscheint?
Das OK gedrückt werden muss ist wäre schon in Ordnung, damit es wieder weg ist.
Gruß Marco

AW: MSG nach jeder Stunde anzeigen
22.09.2015 13:54:09
Daniel
klar.
du musst dir halt die Userform erstellen und dann mit Userform1.Show die Userform anstelle der Msgbox anzeigen lassen.
Gruß Daniel

AW: MSG nach jeder Stunde anzeigen
22.09.2015 14:03:03
Salvadore
Also wenn ich MsgBox "Bitte Wert eingeben" gegen UserForm1.Show tausche (das UserForm1 existiert) tut sich leider gar nichts mehr. :(

AW: MSG nach jeder Stunde anzeigen
22.09.2015 14:22:28
Daniel
Hi
bei mir funktionierst.
da ich deinen Code und deine Datei nicht kenne, kann ich dir leider auch nicht sagen was du falsch gemacht hast.
Gruß Daniel

Anzeige
AW: MSG nach jeder Stunde anzeigen
22.09.2015 14:27:01
Salvadore
Ich hätte ja schon ein Zeitmakro laufen:
Diese Arbeitsmappe
Option Explicit
Private Sub Workbook_Open()
Zeitmakro
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime EarliestTime:=DaEt, Procedure:="Zeitmakro", Schedule:=False
End Sub
Modul1:
Option Explicit
Public DaEt As Date
Sub Zeitmakro()
ThisWorkbook.Worksheets("NS").Range("K3") = Format(Time, "hh:mm:ss")
DaEt = Now + TimeValue("00:00:01")
Application.OnTime DaEt, "Zeitmakro"
End Sub
Diese Zeit läuft in der Zelle K3. Kann ich von dort nicht einen abgriff machen, wenn die Zeit xx:45:xx ist, dass UserForm1.show kommen soll?

Anzeige
AW: MSG nach jeder Stunde anzeigen
22.09.2015 14:35:31
Salvadore
Anbei die Datei.
Ich hab zum testen halt immer die Zeiten geändert, aber funktioniert leider nicht.
https://www.herber.de/bbs/user/100321.xlsm

AW: MSG nach jeder Stunde anzeigen
22.09.2015 14:49:51
Daniel
HI
der Befehl END stoppt sofort JEDE Makroaktivität.
Du willst aber einfach nur die Userform schließen und danach soll der Code weiter laufen und das nächste Ontime absetzen.
Daher ist END hier der falsche Befehl.
Ersetze END durch UNLOAD ME, das schließt die Userform und der Code läuft weiter.
Gruß Daniel

AW: MSG nach jeder Stunde anzeigen
22.09.2015 15:01:37
Salvadore
Ok vielen Dank!
Jetzt hat es funktioniert.
Aber zwei Punkte wären da noch..
bei beender den File kommt immer folgender Fehler:
Userbild
und er makiert mir Application.OnTime..... gelb
und wenn ich die File Starte brauche ich die den Aufruf des UserForms nicht. Muss ich einfach Application.Run "Hinweis" löschen?
Danke für deine Hilfe!

Anzeige
AW: MSG nach jeder Stunde anzeigen
22.09.2015 15:13:57
Salvadore
Wenn ich Datei, die ich dir hochgeladen habe auf UNLOAD ME abändere funktioniert es trotzdem nicht.
Nur wenn ich die Datei neu erstelle. Aber dann kommt der Laufzeitfehler beim beenden.
Ich glaub ich lass es heute lieber :D

AW: MSG nach jeder Stunde anzeigen
22.09.2015 17:20:22
Daniel
Hi
ok, Unload Me löscht wohl auch die Variablen.
verwende statt "Unload Me" den befehl "Me.Hide", das Blendet die Userform nur aus und löscht sie nicht.
weitere Fehler:
die Prüfung im beforeclose muss lauten: if Now
und auch das hier:
Nächste = Nächste = Date + TimeSerial(Hour(Now) - (Minute(Now) >= 45), 45, 0)

muss so lauten:
Nächste = Date + TimeSerial(Hour(Now) - (Minute(Now) >= 45), 45, 0)
wenn die Userform nicht gleich beim Start erscheinen soll, dann erstetze das Application.run durch ein Application.Ontime
Gruß Daniel

Anzeige
AW: MSG nach jeder Stunde anzeigen
22.09.2015 19:01:12
Salvadore
Vielen Dank Daniel!
Das haut jetzt hin. Wenn ich Application on TIme mache bekomme ich nen Fehler beim starten.
Aber der rest haut jetzt hin!
Vielen Dank!

AW: MSG nach jeder Stunde anzeigen
22.09.2015 19:10:06
Daniel
Hi
wenn du zeigen würdest, wie du das Ontime beim Start machst, könnte man dir auch sagen, was du falsch machst und wie es richtig geht.
Gruß Daniel

AW: MSG nach jeder Stunde anzeigen
22.09.2015 21:21:16
Salvadore
Ich versteh jetzt leider nicht genau was du meinst. Ich hab ja nur deinen Code verwendet.
Ich will nur die Excel-File starten und wenn dann xx:45 ist kommt das Userform.
Nicht gleich beim Start von der Excelfile selbst, weil da muss ja nicht gerade xx:45 sein.
  Private Sub Workbook_Open()
'--- automatischer erster aufruf beim Öffnen der Datei
Application.Run "Hinweis"
End Sub
Hier kommt nämlich das Userform schon beim öffnen der File.

Anzeige
AW: MSG nach jeder Stunde anzeigen
23.09.2015 13:06:26
Salvadore
Ist es möglich, dass es beim starten nicht kommt, sondern nur um dreiviertel, Daniel?
Anbei meine file
https://www.herber.de/bbs/user/100337.xlsm

AW: MSG nach jeder Stunde anzeigen
23.09.2015 16:25:17
daniel
Hi
selber mal ein bisschen Nachdenken ist wohl nicht so deins.
wenn der erste Aufruf nicht beim Start, sonden zur nächsten 3/4-Stunde erfolgen soll, dann übernimm doch einfach den Code aus dem Makro "Hinweis"
Private Sub Workbook_Open()
'--- automatischer erster aufruf beim Öffnen der Datei
Nächste = Date + TimeSerial(Hour(Now) - (Minute(Now) >= 45), 45, 0)
Application.OnTime Nächste, "Hinweis"
End Sub
Gruß Daniel

Anzeige
AW: MSG nach jeder Stunde anzeigen
23.09.2015 19:16:44
Salvadore
Hatte ich auch so, aber ich hab bei Application.OnTime das Nächste vergessen.
Danke dir vielmals für deine Hilfe!!!

AW: MSG nach jeder Stunde anzeigen
22.09.2015 09:25:30
Salvadore
Ich hab jetzt mal ein User Form erstellt.
In DieserArbeitsmappe habe ich folgenden Code.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'--- aufruf zurücknehmen, wenn Datei geschlossen wird.
If Now > Nächste Then Application.OnTime Nächste, "Hinweis", Schedule:=False
End Sub
Private Sub Workbook_Open()
'--- automatischer erster aufruf beim Öffnen der Datei
Nächste = Date + TimeSerial(Hour(Now) - (Minute(Now) >= 45), 45, 0)
Application.OnTime Nächste, "Hinweis"
End Sub
Im Modul habe ich folgenden:
Option Explicit
Public Nächste As Date
Sub Hinweis()
UserForm1.Show
Nächste = Date + TimeSerial(Hour(Now) - (Minute(Now) >= 45), 45, 0)
Application.OnTime Nächste, "Hinweis"
End Sub
Irgendwie tut sich da aber nichts um 45. Mit der msgBox funktionierts.
Wenn ich jetzt aber die Datei beende kommt ein laufzeitfehler 1004 "Die Methode "onTime" für _ das Objekt'_Application' ist fehlgeschlagen. und er makiert mir

Application.OnTime Nächste, "Hinweis", Schedule:=False
gelb.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige