VBA MsgBox aufrufen, automatisch schließen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA MsgBox aufrufen, automatisch schließen
von: Anton
Geschrieben am: 07.08.2015 07:11:03

Hallo.
bastle gerade mit VBA eine Berechnung, die bei bestimmtem Ergebnis eine MsgBox einblendet , calculate, ganze Prozedur sieht so aus:


Private Sub worksheet_Calculate()
If Range("B6").Value > 32 Then
    msgbox "Bezugszeit" & vbCrLf & "ist zu groß!", vbOKOnly, "HOPPLA"
End If
End Sub

---
Nun habe ich gesehen, dass man diese Box auch timergesteuert nach ein paar Sekunden automatisch ausblenden kann statt mit Klick auf Ok. Wie baue ich das hier mit ein?
Danke f.d Hilfe.
Anton

Bild

Betrifft: AW: VBA MsgBox aufrufen, automatisch schließen
von: Nepumuk
Geschrieben am: 07.08.2015 07:37:31
Hallo,
teste mal:

Private Sub worksheet_Calculate()
    Dim objShell As Object
    If Range("B6").Value > 32 Then
        Set objShell = CreateObject("WScript.Shell")
        Call objShell.Popup("Bezugszeit" & vbCrLf & "ist zu groß!", 2, "HOPPLA", vbOKOnly)
        Set objShell = Nothing
    End If
End Sub


Gruß
Nepumuk

Bild

Betrifft: AW: VBA MsgBox aufrufen, automatisch schließen
von: Anton
Geschrieben am: 07.08.2015 10:27:26
Hallo Nepumuk,
spitze, das klappt!
Danke

Bild

Betrifft: WsShell.Popup ...
von: Matthias L
Geschrieben am: 07.08.2015 07:39:15
Hallo

Dim Ibox, WsShell
If Range("B6").Value > 32 Then
 'Verweis auf "Microsoft Scripting Runtime" erforderlich
 Set WsShell = CreateObject("WScript.Shell")
 Ibox = WsShell.Popup("Bezugszeit ist zu groß!", 3, "3 Sek Fenster")
End If

Gruß Matthias

Bild

Betrifft: AW: WsShell.Popup ...
von: Luschi
Geschrieben am: 07.08.2015 07:46:30
Hallo Matthias,
diese Info:


'Verweis auf "Microsoft Scripting Runtime" erforderlich
ist falsch, da
Set WsShell = CreateObject("WScript.Shell")
ein 'Late Binding' ist und keinen expliziten Verweis erfordert.
Gruß von Luschi
aus klein-Paris


Bild

Betrifft: Info entfernt ...
von: Matthias L
Geschrieben am: 07.08.2015 08:07:56
Hallo Luschi
Habs gerade mal geprüft und Du hast Recht,
Der Verweis ist auch bei mir nicht gesetzt und es funktioniert.
Evtl war es ja früher mal notwendig, stammt noch aus der Zeit um XL2000
Danke. Hab die Info aus meiner Personl.xls entfernt.
Gruß Matthias

Bild

Betrifft: AW: WsShell.Popup ...
von: Anton
Geschrieben am: 07.08.2015 10:30:51
Sieht gut aus, aber
er markiert B6 und meldet "Fehler beim Kompilieren außerhalb einer Prozedur ungültig".

Bild

Betrifft: AW: WsShell.Popup ...
von: Daniel
Geschrieben am: 07.08.2015 10:53:41
Hi
die meisten zeigen hier nur den relevanten Ausschnitt des Codes und lassen gerne mal die Selbstverständlichkeiten wie die Start- und Endzeile des Makros weg.
Auch deswegen weil man davon ausgehen kann, dass du den gezeigten Code ja so nicht alleine als Makro einsetzen willst, sondern in ein grösseres Projekt einfügst.
dh. du musst hier die Start- und Endzeile des Makros selber schreiben und den gezeigten Code dazwischen einfügen:

Sub Test()
... hier dann der Code
End Sub


Bild

Betrifft: AW: WsShell.Popup ...
von: Anton
Geschrieben am: 07.08.2015 17:56:58
Sorry, bin halt doch noch blutiger Anfänger bei VBA.
Nun habe ich es so gemacht

Sub test()
    Dim Ibox, WsShell
        If Range("B6").Value > 32 Then
         'Verweis auf "Microsoft Scripting Runtime" erforderlich
         Set WsShell = CreateObject("WScript.Shell")
         Ibox = WsShell.Popup("Bezugszeit ist zu groß!", 3, "3 Sek Fenster")
        End If
End Sub
Ergebnis: keines, auch keien fehler. Hängt es damit zusammen, dass es nun ein Infobox ist?
Anton

Bild

Betrifft: ist denn B6 > 32 ? ...kwT
von: Matthias L
Geschrieben am: 07.08.2015 20:47:31
.

Bild

Betrifft: AW: ist denn B6 > 32 ? ...kwT
von: Anton
Geschrieben am: 08.08.2015 17:29:32
Hallo, auch wenn B6 den Wert von 32 überschreitet, erscheint keine infoBox.
Ehrlich

Bild

Betrifft: Funkt doch, siehe Datei...
von: robert
Geschrieben am: 08.08.2015 17:40:24
https://www.herber.de/bbs/user/99427.xlsm

Bild

Betrifft: AW: Funkt doch, siehe Datei...
von: Anton
Geschrieben am: 08.08.2015 18:49:46
Danke Robert, danke Matthias.
Ja mit direkter Eingabe in B6 klappt das.
Hatte aber eingangs erwähnt, dass dieser Wert in B6 keine Eingabe ist, sondern ein Berechnungsergebnis von drei anderen Zellen. Deshalb auch der erste Ansatz mit sub calculate().
Evtl.liegt da unser Missverständnis ?
Trotzdem danke im Voraus.
Anton

Bild

Betrifft: AW: Funkt doch, siehe Datei,mit Formel B6...
von: robert
Geschrieben am: 08.08.2015 19:01:14
https://www.herber.de/bbs/user/99428.xlsm

Bild

Betrifft: AW: Funkt doch, siehe Datei,mit Formel B6...
von: Anton
Geschrieben am: 08.08.2015 21:51:55
Alles klar, super danke
Anton

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA MsgBox aufrufen, automatisch schließen"