• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

msgbox wordt niet altijd afgesloten CreateObject

Status
Niet open voor verdere reacties.

sanders1969

Gebruiker
Lid geworden
29 dec 2018
Berichten
243
Ik heb ooit van iemand hier onderstaande msgbox gekregen echter soms werkt deze niet tenminste sluit de messagebox niet uit zichzelf af.
Hoe kan ik alsnog deze messagebox controleren of deze actief is. Zoja dan afsluiten.
Of heeft iemand een stabielere messagebox die altijd gesloten wordt.

Code:
CreateObject("WScript.Shell").PopUp "Over drie seconden zal excel sluiten", 3, "Sluiten excel", vbInformation + vbOKOnly
ThisWorkbook.Close SaveChanges:=False
 
Doe het eens zo:
Code:
Dim WS As Object
Set WS = CreateObject("WScript.Shell")
WS.popup "Over drie seconden zal excel sluiten", 3, "Sluiten excel", vbInformation + vbOKOnly
Set WS = Nothing
 
Wat heb je als gebruiker aan zo'n nutteloze melding of zit er nog meer code achter?

Waarom mogen de gegevens niet opgeslagen worden?
 
Als dat alles is dat je wilt tonen zou ik er een simpele userform voor maken met een label waar de tekst in staat.
Alles dat je dan aan code nodig hebt is dit:
Code:
Userform1.Show vbModeless
Application.Wait (Now + TimeValue("0:00:03"))
Unload Userform1
 
Laatst bewerkt:
Dankje maar de code werkt die je gisteren had aangeboden, zie hieronder

Code:
[CODE]#If Win64 Then
    Private Declare PtrSafe Function MsgBoxTimeout _
        Lib "user32" _
        Alias "MessageBoxTimeoutA" ( _
            ByVal hwnd As LongPtr, _
            ByVal lpText As String, _
            ByVal lpCaption As String, _
            ByVal wType As VbMsgBoxStyle, _
            ByVal wlange As Long, _
            ByVal dwTimeout As Long) _
    As Long
#Else
    Private Declare Function MsgBoxTimeout _
        Lib "user32" _
        Alias "MessageBoxTimeoutA" ( _
            ByVal hwnd As Long, _
            ByVal lpText As String, _
            ByVal lpCaption As String, _
            ByVal wType As VbMsgBoxStyle, _
            ByVal wlange As Long, _
            ByVal dwTimeout As Long) _
    As Long
#End If


Public Sub Msgbox2(strMessageSubject, strMessageTitle As String, lngMessageSeconds)

    Dim ReturnValue
    
    ReturnValue = MsgBoxTimeout(0, strMessageSubject, strMessageTitle, vbInformation + vbOKOnly, 0, lngMessageSeconds * 1000)
    
End Sub

Sub TestMsgbox()
    Dim ReturnValue

    ReturnValue = MsgBoxTimeout(0, "Do you like this message?" & vbCrLf & "This message box will be closed after 4 seconds." & vbCrLf & vbCrLf & "(See Immediate window for return value)", "Return Choice", vbQuestion + vbYesNoCancel, 0, 4000)
    
    Select Case ReturnValue
        Case vbYes
            Debug.Print "You picked Yes."
        Case vbNo
            Debug.Print "You picked No."
        Case vbCancel
            Debug.Print "You picked Cancel."
        Case 32000
            Debug.Print "Timeout before user made selection."
    End Select
    
End Sub
[/CODE]
 
Ja, dat dat werkt geloof ik :)
Maar is nogal overbodig veel code als het puur gaat om het tonen van een tekst voor een bepaalde tijd.
 
Haha deadlines he en het werkt ;-)
Gisteren paniek in de tent dus was al blij dat ik een werkende oplossing af had.
Nu handleiding schrijven grrrr
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan