Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Popup bei Zeitablauf

Betrifft: Popup bei Zeitablauf von: Manasse
Geschrieben am: 14.11.2014 09:37:41

Hallo,

ich habe eine Tabelle die Zeitintervalle beinhaltet. Nun soll ein Popup erscheinen, wenn ein Zeitintervall beendet ist. Also etwa so:

A1: Kennung, A2: Zeitintervall Beginn, A3: Zeitintervall Ende
Wenn A3< Aktuelle Zeit, dann Popup

Hat jemand eine Idee, ob, und wenn ja wie, so etwas machbar ist?

Herzlichen Dank für jede Hilfe

Gruß Manasse

  

Betrifft: AW: Popup bei Zeitablauf von: Hajo_Zi
Geschrieben am: 14.11.2014 09:38:58

vielleicht reich auch die bedingte Formatierung?

GrußformelHomepage


  

Betrifft: AW: Popup bei Zeitablauf von: Manasse
Geschrieben am: 14.11.2014 09:50:03

Servus,

vielen Dank für die schnelle Reaktion. Eine bedingte Formatierung wäre das Notszenario. Da es sich aber um eine große Tabelle handelt, die auch noch unter Stressbedingung bearbeitet werden muss, wäre ein Popup die bessere Variante.

Gruß Manasse


  

Betrifft: Hängt davon ab... von: Frank
Geschrieben am: 14.11.2014 13:20:13

... wann und wie oft der Vergleich durchgeführt werden soll.

Praktikabel wäre hier die Verwendung von Worksheet-Ereignissen. Oder Du belegst einen Button mit dem Code. Der Code an sich ist ja nicht schwer zu realisieren:

If Cells(1, 3).Value < Time Then MsgBox "Zu spät"
Grüsse,
Frank


  

Betrifft: AW: Hängt davon ab... von: Manasse
Geschrieben am: 14.11.2014 14:51:22

Hi Frank,

vielen Dank. Super Idee!!
Ich habe es per Button gelöst. Dennoch eine Frage, ob Du mir einen weiterführenden Tipp geben kannst. Mit dieser von Dir dargestellten Formel wird ja nur ein Feld abgefragt. Ich muss aber eine ganz Latte von Feldern püfen. So habe ich einfach mal (zum Test) drei Felder zum prüfen in die Button Programmierung eingefügt. Also drei Zeilen Deiner Formel untereinander.

If Cells(3, 3).Value < Time Then MsgBox "Überfällig Zeile 3"
If Cells(4, 3).Value < Time Then MsgBox "Überfällig Zeile 4"
If Cells(5, 3).Value < Time Then MsgBox "Überfällig Zeile 5"

Das Ergebnis ist, dass ich drei mal auf OK in der MsgBox drücken muss und bekomme jeweils die Info zu der relevanten Zeile.

Meine Frage nun, ob es eine Möglichkeit gibt, dass alle Felder deren Zeitintervall überschritten ist, auf einmal in der MsgBox angezeigt werden können? Hast Du dazu eine Idee?

Gruß
Manasse


  

Betrifft: AW: Hängt davon ab... von: Manasse
Geschrieben am: 14.11.2014 15:04:39

Nur die Markierung, dass noch ein Hilfegesuch offen ist.


  

Betrifft: Ja, geht. von: Frank
Geschrieben am: 14.11.2014 15:19:34

Hi Manasse,

so z.B:

Z1=0
if...Vergleich erste Zelle... then Z1=1
if...Vergleich zweite Zelle... then Z1=Z1 + 2
if...Vergleich dritte Zelle... then Z1=Z1 + 4
if Z1>0 Then
   select case Z1
   case 1
      Text="Zeile 1"
   case 2
      Text="Zeile 2"
   case 3
      Text="Zeile 1 & Zeile 2"
   ...
   ...
   end select
   Dummy=msgbox("Zeitüberschreitung", "Überfällig: " & Text, vbOKonly)
end if
Grüsse,
Frank


  

Betrifft: AW: Ja, geht. von: Manasse
Geschrieben am: 14.11.2014 15:41:21

Hallo Frank,

vielen Dank. Leider bleibt das Makro bei der MsgBox hängen und ich weiß nicht warum. Wenn Du noch Zeit und Lust hast, nehme ich gerne Deine Hilfe noch einmal in Anspruch. Wenn nicht, ist das aber auch völlig ok! Ich bin auf jeden Fall ein Stück weiter.

Gruß Manasse


  

Betrifft: Zu spät ... ;-) von: Frank
Geschrieben am: 14.11.2014 15:58:44

Hi,

ja, die Messagebox! Ich weiss die Reeihenfolge der Optionen eben auch nur, wenn mir der Editor das als FlyOut anzeigt. Probiers mal so:
Dummy = MsgBox("Überfällig: " & Text, vbOKOnly, "Zeitüberschreitung")

Grüsse,
Frank


  

Betrifft: Leider keine Sammelmeldung von: Manasse
Geschrieben am: 14.11.2014 17:34:40

Salü Frank,
nun springt die Box wieder an :-)
Leider kommt sie aber nur einmal und nur mit dem "Überfällig". Den weiteren Text gibt die Box nicht wieder. Aber die Überschrift der Box klappt dennoch.
Ich füge mal die Beispieldatei bei.

https://www.herber.de/bbs/user/93776.xlsm

In dem VBA Editor kannst Du Dir mal die beiden Programmierungsvarianten ("jede überfällige Zeile wird einzeln gemeldet" und "Versuch alles in einer Box") anschauen. Es ist jeweils nur eine Möglichkeit zu aktivieren. So kann der Unterschied gut nachvollzogen werden.

Gruß
Manasse


  

Betrifft: Bin erst wieder am Mittwoch online von: Frank
Geschrieben am: 14.11.2014 21:38:02

Hi

vielleicht schaut sich ja jemand den Thread mal an. Bin frühestens Dienstagabend; ggf. auch erst Mittwochabend wieder online.

Grüsse,
Frank


  

Betrifft: CASE vollständig prüfen von: Frank
Geschrieben am: 19.11.2014 09:04:15

Hallo Manasse,

ja, ist klar. Du musst natürlich auch die übrigen Varianten (Z1=4, 5, 6 etc) in der SELECT CASE-Abfrage definieren. In der jetzigen Variante prüfst Du nur bis CASE 3. Das wird aber sofort überschritten, wenn mehr als eine Zeile oder Zeile 5 überfällig sind.

CASE 4 wäre dann Text = "Zeile 5"
CASE 7 wäre dann Text = "Zeile 3 & Zeile 4 & Zeile 5"

CASE 6 und 5 überlasse ich Dir.

Grsse,
Frank


  

Betrifft: Besten Dank von: Manasse
Geschrieben am: 19.11.2014 13:14:54

Hallo Frank,

ganz herzlichen Dank, dass Du tatsächlich noch einmel in den Fall geschaut hast. Jetzt verstehe ich auch was da vor sich geht. Wenn ich dann eine länger Liste habe wird es kompliziert, da der Text für jeden Fall vorgeschrieben werden muss. Ich hatte halt die schlichte Vorstellung, dass man in der Box Texte zusammenziehen kann abhängig davon, ob ein Feld nun betroffen ist oder nicht. Also so etwa wie "Text verknüpfen". Aber nun ja ...
Trotzdem vielen Dank, dass Du Dir die Zeit genommen hast und ich wieder etwas dazu gelernt habe.

Gruß
Manasse


  

Betrifft: Dann eher so... von: Frank
Geschrieben am: 19.11.2014 13:50:39

Hallo nochmal,

das geht natürlich auch anders, wenn da noch mehr Abfragen erfolgen sollen.

Text="Überfällig: "
for i= 3 to 10 'falls 7 Zeilen zu prüfen sind
   If Cells(i, 3).Value < Time And Cells(i, 4) = "" Then
      Text=Text & "Zeile " & i
   end if
next
Da steht dann aber kein Komma drin, wie das für ordentliches Deutsch der Fall sein sollte. Setzt Du am Ende noch ein & ", ", hast Du am Ende ein Komma, obwohl da gar nix mehr kommt. Klar, auch das kann man abfangen, indem man das einfach nach dem letzten Durchlauf wieder aus dem String entfernt: Text = Left(Text, Len(Text) - 2).

Das war aber so nicht gefragt. In Deiner anfänglichen Fragestellung ging es um eine Zelle, die geprüft werden sollte, was dann später auf drei erhöht wurde.

Grüsse,
Frank


  

Betrifft: Genial !!! von: Manasse
Geschrieben am: 19.11.2014 15:21:17

Hi Frank,

es wird immer besser mit der Datei. Super!! Ich trau mich kaum noch zu gestehen, dass ich mit Deinem Input das letzte Komma nicht wegbekomme. Ich weiß einfach nicht, wo ich diese Zeile (Text = Left(Text, Len(Text) - 2)) unterbringen soll. Ich füge die Datei vorsichtshalber noch einmal bei.
https://www.herber.de/bbs/user/93880.xlsm
Wenn Du noch mal ganz viel Zeit und Interesse hast, würde ich mich über einen nochmaligen Tipp freuen :-)

Du glaubst nicht, wie dankbar ich für deine Tipps bin. Und Du hast recht, dass meine Anfrage anders gestellt war. Ich bin bisher immer vorsichtig und frage nicht zu viel, damit ich keinen von meiner Anfrage abschrecke. Nicht jeder hilft so toll. Jetzt ist aber alles (bis auf den Schönheitsfehler des letzten Kommas) erreicht, was ich mit der Tabelle vorhatte. Ganz herzlichen Dank!!!!

Gruß
Manasse


  

Betrifft: Zeichenkette 'Text' bearbeiten von: Frank
Geschrieben am: 19.11.2014 16:19:56

Hallo Manasse,

einfach zwischen die Zeilen Text = Text & i & ", " und End If
Damit wird die Zeichenkette, die in der Variable 'Text' steckt, abschliessend bearbeitet.

Grüsse, Frank


  

Betrifft: AW: Zeichenkette 'Text' bearbeiten von: Manasse
Geschrieben am: 19.11.2014 16:55:30

Salü Frank,

herzlichen Dank nochmal für die Hilfe. Zwar verschwinden alle Kommata im Infofeld wenn ich Deine Zeile an den angegebenen Ort kopiere, aber da es ja nur ein Schönheitsfehler ist, will ich Dich nicht länger belästigen und behalte einfach das letzte Komma. Es sei denn, dass Du wirklich Spaß daran hast.

Grüsse
Manasse


  

Betrifft: Ist ja auch Quatsch... von: Frank
Geschrieben am: 19.11.2014 18:17:45

Da hatte ich nicht noch mal richtig hingeguckt. Nach dem NEXT, vor der Ausgabe der MSGBOX natürlich.

Grüsse,
Frank


  

Betrifft: Geschafft. DANKE!! von: Manasse
Geschrieben am: 19.11.2014 18:22:24

Salü,

und nun, nach perfekter Lösung, noch einmal ein ganz herzliches Dankeschön !!!!!!!!!!!!!!!!!

Grüsse,
Manasse