Microsoft Excel

Herbers Excel/VBA-Archiv

Msgbox-Timer


Betrifft: Msgbox-Timer von: Peter
Geschrieben am: 02.10.2019 08:28:41

Servus Gemeinde,

gibt es die Möglichkeit einen Timer für eine Msgbox zu setzten, sodass nach einer halben Sekunde, dass Fenster automatisch geschlossen wird?

Folgenden Code habe ich schon gefunden, dieser funktioniert aber iwie nicht, da sich das Fenster nicht automatisch schließt.

Sub Error123()
Cancel = True
Dim i As Integer
i = CreateObject("WScript.Shell").PopUp("Error", 0.5, "Error")
End Sub

vielen Dank im voraus.

Gruß

Peter

  

Betrifft: AW: Msgbox-Timer von: Nepumuk
Geschrieben am: 02.10.2019 08:44:06

Hallo Peter,

ein Beispiel:

Option Explicit

Private Declare Function MessageBoxTimeoutA Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal lpText As String, _
    ByVal lpCation As String, _
    ByVal uType As Long, _
    ByVal wLanguageId As Integer, _
    ByVal dwMiliseconds As Long) As Integer

Private Const MB_TIMEOUT As Long = &H7D00

Public Sub test()
    
    Dim intReturn As Integer
    
    intReturn = MessageBoxTimeoutA(Application.hWnd, "Hallo", _
        "TimeoutTest", vbYesNo Or vbInformation, 0, 5000) '5000 = 5 Sekunden
    
    Select Case Clng(intReturn)
        Case MB_TIMEOUT
            Debug.Print "TimeOut"
        Case vbOK, vbYes
            Debug.Print "Ok, Ja"
        Case vbAbort, vbCancel
            Debug.Print "Abrechen"
        Case vbNo
            Debug.Print "Nein"
        Case vbRetry
            Debug.Print "Wiederholen"
        Case Else
            Debug.Print intReturn
    End Select
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Msgbox-Timer von: Torsten
Geschrieben am: 02.10.2019 09:07:22

Hallo Peter,

versuch mal:

Sub Error123()
 Cancel = True
 Dim i As Integer
 i = CreateObject("WScript.Shell").PopUp("Error", 2, "Error")
 End Sub
Gruss Torsten


  

Betrifft: AW: Msgbox-Timer von: Torsten
Geschrieben am: 02.10.2019 09:12:28

nein, geht nicht. Aber so:

Sub Error123()
Cancel = True
Dim i As Integer, iDauer as Integer
iDauer = 2
i = CreateObject("WScript.Shell").Popup("Error", iDauer, "Error")
End Sub

Gruss Torsten