Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Popup-Message auf Zeit (Nepomuk)

VBA Popup-Message auf Zeit (Nepomuk)
16.01.2022 15:34:49
Joschi
Hallo VBA-Kenner,
eigentlich hatte ich einen älteren Thread gesucht: https://www.herber.de/forum/messages/1826272.html
Doch dieser Link bringt einen Fehler 404.
Jetzt habe ich folgenden Thread gefunden: https://www.herber.de/forum/archiv/1712to1716/1715877_MsgboxTimer.html
Mein Problem 1: mit der im neuen Thread beschriebenen Technik CreateObject("WScript.Shell").Popup hatte ich früher schon das Problem, dass die Nachricht nicht nach der angegebenen Zeit verschwindet. Mit einem kleinen Test-Programm habe ich aktuell 10 Durchläufe mit jeweils 10 Sekunden Wartezeit gemacht. Die niedrigste gestoppte Zeit waren 14,566 Sekunden, die maximale Zeit unglaubliche 60,773 Sekunden. Dieses Problem hatte ich schon früher und habe deshalb den von Nepomuk in dem anfangs genannten Thread bereitgestellten API-Code (erfolgreich) iunter Excel m Einsatz.
Mein Problem 2: ich möchte diese API-Technik auch unter Word einsetzen. Doch da gibt es Probleme mit "Application.hWnd". Die Fehlermeldung: "Methode oder Datenobjekt nicht gefunden"
Wie kann ich das Word-Problem lösen?
Gruß Joschi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Popup-Message auf Zeit (Nepomuk)
16.01.2022 16:48:40
volti
Hallo Joschi,
m.E. kannst Du die MsgBox auch ohne die Angabe der Elternfensters anwenden, also einfach 0 statt Application.hWnd einsetzen.
Oder Du nimmst den Desktop als Elternfenster (s.Beispiel). Aber da ist kein Unterschied in der Ausführung.
Code:

[Cc][+][-]

Option Explicit Private Declare PtrSafe Function GetDesktopWindow Lib "user32" () As LongPtr Private Declare PtrSafe Function MessageBoxTimeoutA Lib "user32" ( _ 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 Private Const MB_TIMEOUT As Long = &H7D00 Public Sub test() Dim intReturn As Long intReturn = MessageBoxTimeoutA(GetDesktopWindow(), "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

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: VBA Popup-Message auf Zeit (Nepomuk)
16.01.2022 17:45:26
Nepumuk
Hallo,
das würde gehen:

ThisDocument.Windows(1).Hwnd
Gruß
Nepumuk
AW: VBA Popup-Message auf Zeit (Nepumuk)
16.01.2022 17:53:45
Joschi
Hallo Karl-Heinz, hallo Nepomuk,
ich habe einen positiven Test mit "ThisDocument.Windows(1).Hwnd" gemacht. Das ist für mich die Lösung, Danke für die Unterstützung
Gruß Joschi.
AW: VBA Popup-Message auf Zeit (Nepumuk)
17.01.2022 07:50:58
Joschi
Nachtrag:
Ich habe inzwischen noch einen Testlauf mit der API-Version gemacht; gleiche Bedingungen wie beim "CreateObject("WScript.Shell").Popup"-Test..
Hier das Ergebnis:
minimale Wartezeit: 10,053
maximale Wartezeit: 10,111
Gruß Joschi

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige