Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Msgbox schließen nach 3 Sek
#1
Hallo Leute,

ich habe eine Datei in der Msgboxen ausgelöst werden.

Private Sub Worksheet_Activate()

Dim lngCalc As Long
        With Application
        lngCalc = .Calculation
        .Calculation = xlCalculationManual
        .EnableEvents = False

      

     
        If .Range("H38") * 24 > 35 And .Range("H38") * 24 < 47 Then MsgBox "Es sind noch " & Format(47 - .Range("H38") * 24, "0.0") & " Einsatzstunden möglich"
        If .Max(Range("H38") * 24) = 47 Then MsgBox "ACHTUNG!" & Chr(13) & _
            "weitere Stunden im nächsten Monat eintragen"
            '"Vorgesehene Stundenanzahl überschritten!" & Chr(13) & _
            '"Std im nächsten Monat eintragen !"

        If .Max(Range("H38") * 24) > 47 Then MsgBox "ACHTUNG!" & Chr(13) & _
            "Vorgesehene Stundenanzahl um " & Format(.Range("H38") * 24 - 47, "0.0") & " Std. überschritten!" & Chr(13) & _
            "Std im nächsten Monat eintragen !"

        If .Range("H38") * 24 < 47 And .Range("H38") * 24 >= 40 Then MsgBox "Deine maximalen Std sind fast voll !"
        .EnableEvents = True
        .Calculation = lngCalc
    End With
End Sub



Meine Frage lautet nun, wo und wie muß der Code geändert werden, das sich die Msgboxen selbstständig nach 3 Sekunden schließen? Habe in google viele Ansätze und Lösungen gefunden, aber es wird nicht erklärt wie ich in schon "vorhanden Msgboxsen" Code einfüge.

Bin für jede Hilfe Dankbar Angel
Antworten Top
#2
Hallo,

hier zwei Beispiele....

Die Declares müssen ganz oben als erstes ins Modul. Den MSGBOX-Befehl kannst Du einbauen, wo Du willst.

Code:

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

Sub test1()
  If .Range("H38") * 24 > 35 And .Range("H38") * 24 < 47 Then
    MessageBoxTimeoutA Application.hWnd, _
        "Es sind noch " & Format(47 - .Range("H38") * 24, "0.0") & " Einsatzstunden möglich", _
        "TimeOut", vbInformation, 0, 3000    '3000 = 3 Sekunden
  End If
End Sub

Sub Test2()
  If .Range("H38") * 24 > 35 And .Range("H38") * 24 < 47 Then
    CreateObject("WScript.Shell").Popup "Es sind noch " & Format(47 - .Range("H38") * 24, "0.0") _
      & " Einsatzstunden möglich", 3, "TimeOut", vbOKOnly Or vbInformation
  End If
End Sub

_________
viele Grüße
Karl-Heinz
[-] Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:
  • Rudi'S
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste