Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Selbstschliessende MsgBox
zurück: Autowert' der Luecken fuellt weiter: Texte im Bericht dynamisch ändern Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
stpimi
Moderator Access


Verfasst am:
19. Dez 2005, 14:15
Rufname:
Wohnort: Graz

Selbstschliessende MsgBox - Selbstschliessende MsgBox

Nach oben
       

Manchmal wird gewünscht, daß kurz eine Meldung angezeigt wird um das Speichern eines Datensatzes zu bestätigen o.ä.
Die Standard-MsgBox erfordert allerdings ein Klick auf OK was nicht immer erwünscht ist.
Zu diesem Thema hat sich aus einer konkreten Anfrage und dank eines genialen Anschubsers (Msgbox automatisch quittieren??) von Lisa aus dem Word-Forum (Danke Dir! Smile )die folgende Version ergeben:
Code:
Public Sub MsgFenster(txtInfo As String, _
                      Optional lngAnzeigezeit As Integer, _
                      Optional intSymbol As Integer)
    Dim txtUeberschrift As String
    Dim objShell As Object

    If IsMissing(lngAnzeigezeit) Then lngAnzeigezeit = 1
    If IsMissing(intSymbol) Then intSymbol = 64
    Select Case intSymbol
      Case 16:   txtUeberschrift = "Fehler"
      Case 48:   txtUeberschrift = "Achtung"
      Case 64:   txtUeberschrift = "Information"
      Case Else: txtUeberschrift = "Info"
    End Select
    Set objShell = CreateObject("WScript.Shell")
    objShell.PopUp txtInfo, lngAnzeigezeit, txtUeberschrift, intSymbol
    Set objShell = Nothing
End Sub
Das Teil benötigt keine zusätzlichen Dateien oder Registrierungen.
_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
Willi Wipp
Moderator


Verfasst am:
19. Dez 2005, 16:19
Rufname:
Wohnort: Raum Wiesbaden


Re: Selbstschliessende MsgBox - Re: Selbstschliessende MsgBox

Nach oben
       

Hi stpimi,

als kleine Anmerkung:
Soweit mir bekannt funktioniert IsMissing nur bei optionalen Parametern vom Datentyp Variant.
Fuer Deine Loesung wuerde ich so vorgehen
Code:
Public Sub MsgFenster(strInfo As String, _
                      Optional lngAnzeigezeit As Long = 1, _
                      Optional intSymbol As Integer = vbInformation)
    Dim strUeberschrift As String
    Dim objShell As Object

    Select Case intSymbol
      Case vbQuestion:    strUeberschrift = "Frage"
      Case vbExclamation: strUeberschrift = "Achtung"
      Case vbInformation: strUeberschrift = "Information"
      Case Else:          strUeberschrift = "Fehler"
    End Select
    Set objShell = CreateObject("WScript.Shell")
    objShell.PopUp strInfo, lngAnzeigezeit, strUeberschrift, intSymbol
    Set objShell = Nothing
End Sub
'Aufruf z.B.:
'MsgFenster "Hallo Welt", 2, vbInformation

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 11. Mai 2006, 08:54, insgesamt einmal bearbeitet
stpimi
Moderator Access


Verfasst am:
19. Dez 2005, 20:34
Rufname:
Wohnort: Graz

AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       

Hi Willi!

Danke, dass Du es gleich auch hier korrigiert hast - das war mir neu.

_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
Gast



Verfasst am:
22. Jun 2006, 12:06
Rufname:

AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       

Hallo,

diese Funktion würde mir auch gefallen, aber es funktioniert bei mir nicht (Access 2000/2002/2003).

Wollte es als globale Function einsetzen.

Wenn ich den Code zu meinem Formularmodulen kopiere geht's auch nicht.

Was mach ich hier falsch, oder brauche ich für das Objekt <WScript.Schell> noch was Question

Gruß

Knuti
Gast



Verfasst am:
26. Jun 2006, 17:45
Rufname:


-

Nach oben
       

mit welchem programm schreibt ihr solche programme mit sonner msgbox?
stpimi
Moderator Access


Verfasst am:
26. Jun 2006, 23:06
Rufname:
Wohnort: Graz

AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       

Servus Gast!

Die Sprache, in der diese Codes geschrieben sind, ist handelsübliches VBA. Du musst die entsprechenden Verweise setzen, dann kannst Du auf jede beliebige Objektbibliothek zugreifen.

_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
Nepumuk
VB / VBA Programmierer


Verfasst am:
27. Jun 2006, 01:37
Rufname: Max
Wohnort: Dusseldoof

AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       

Nepumuk am 27. Jun 2006 um 01:09 hat folgendes geschrieben:
Hallo Michael,

das geht auch ohne Verweis. Einfach mit:
Code:
    Set objShell = CreateObject("WScript.Shell")

Hi @all,

und hier noch eine Razz
Code:
Option Compare Database
Option Explicit

Private Declare Function MessageBox Lib "user32.dll" Alias _
    "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, _
                   ByVal lpCaption As String, ByVal wType As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
                   ByVal lpWindowName As String) As Long
Private Declare Function SetTimer Lib "user32.dll" _
    (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
     ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" _
    (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function PostMessage Lib "user32.dll" Alias _
    "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
                    ByVal wParam As Long, ByRef lParam As Any) As Long
   
Private Const MB_DEFBUTTON1 = &H0&
Private Const MB_DEFBUTTON2 = &H100&
Private Const MB_DEFBUTTON3 = &H200&
Private Const MB_ICONASTERISK = &H40&
Private Const MB_ICONEXCLAMATION = &H30&
Private Const MB_ICONHAND = &H10&
Private Const MB_ICONINFORMATION = MB_ICONASTERISK
Private Const MB_ICONQUESTION = &H20&
Private Const MB_ICONSTOP = MB_ICONHAND
Private Const MB_OK = &H0&
Private Const MB_OKCANCEL = &H1&
Private Const MB_YESNO = &H4&
Private Const MB_YESNOCANCEL = &H3&
Private Const MB_ABORTRETRYIGNORE = &H2&
Private Const MB_RETRYCANCEL = &H5&
Private Const GC_CLASSNAMEMSACCESS = "OMain"
Private Const GC_CLASSNAMEMSDIALOGS = "#32770"
Private Const WM_CLOSE = &H10
Private Const strBoxTitle = "Information"
Private hWnd As Long

Public Sub prcMsgBox_Time2()
    hWnd = FindWindow(GC_CLASSNAMEMSACCESS, vbNullString)
    SetTimer hWnd, 0&, 2000&, AddressOf prcTimer '2000 Millisekunden
    MessageBox hWnd, "Diese Meldung schließt sich selbst.", strBoxTitle, _
               MB_OK Or MB_ICONINFORMATION
End Sub

Private Sub prcKillBox()
    PostMessage FindWindow(GC_CLASSNAMEMSDIALOGS, strBoxTitle), WM_CLOSE, _
                0&, 0&
End Sub

Private Sub prcTimer(ByVal hWnd As Long, ByVal nIDEvent As Long, _
                     ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Call prcKillTimer
    Call prcKillBox
End Sub

Private Sub prcKillTimer()
    KillTimer hWnd, 0&
End Sub
Diese kann, wenn das Handle des Parentwindows auf 0 gesetzt wird, auch unabhängig von der Application aufgerufen werden, um sie z.B. als Meldung über allen Fenstern anzuzeigen, auch wenn die aufrufende Application selbst im Hintergrund ist.
_________________
De fontibus non est disputandum

Gruß
Nepumuk Cool
Gast



Verfasst am:
29. Dez 2006, 12:26
Rufname:

AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       

Hallo,
ich bin ein Access97-Gelegenheitsprogrammierer. Ich möchte aber das tolle Feature für das automatische MsgFenster schließen nutzen.

Bekomme aber immer Syntaxfehler beim Compilieren in der Zeile:
Code:
    SetTimer hWnd, 0&, 2000&, AddressOf prcTimer '2000 Millisekunden
Woran kann das wohl liegen ?

Danke und einen guten Rutsch ins neue Jahr.
gerdstone
Nepumuk
VB / VBA Programmierer


Verfasst am:
29. Dez 2006, 12:59
Rufname: Max
Wohnort: Dusseldoof

AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       

Hallo gerdstone,

weil der Operator AddressOf in Office97 (=VB5.0) noch nicht bekannt ist. So sollte es in Office97 funktionieren. Ich kann es nur nicht testen, da genau diese Funktion ab Office2000 (=VB6.0) nicht mehr funktioniert. Aber eine Garantie möchte ich nicht darauf geben. Du könntest das ganze natürlich auch über die "WScript.Shell" machen. Nur läuft da die Uhr nicht so genau.
Code:
Option Explicit

Private Declare Function GetCurrentVbaProject Lib "vba332.dll" Alias _
    "EbGetExecutingProj" (ByRef hProject As Long) As Long
Private Declare Function GetFuncID Lib "vba332.dll" Alias _
    "TipGetFunctionId" (ByVal hProject As Long, _
                        ByVal strFunctionName As String, _
                        ByRef strFunctionId As String) As Long
Private Declare Function GetAddr Lib "vba332.dll" Alias _
    "TipGetLpfnOfFunctionId" (ByVal hProject As Long, _
                              ByVal strFunctionId As String, _
                              ByRef lpfn As Long) As Long
Private Declare Function MessageBox Lib "user32.dll" Alias _
    "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, _
                   ByVal lpCaption As String, ByVal wType As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
                   ByVal lpWindowName As String) As Long
Private Declare Function SetTimer Lib "user32.dll" _
    (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
     ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" _
    (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function PostMessage Lib "user32.dll" Alias _
    "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
                    ByVal wParam As Long, ByRef lParam As Any) As Long
   
Private Const MB_DEFBUTTON1 = &H0&
Private Const MB_DEFBUTTON2 = &H100&
Private Const MB_DEFBUTTON3 = &H200&
Private Const MB_ICONASTERISK = &H40&
Private Const MB_ICONEXCLAMATION = &H30&
Private Const MB_ICONHAND = &H10&
Private Const MB_ICONINFORMATION = MB_ICONASTERISK
Private Const MB_ICONQUESTION = &H20&
Private Const MB_ICONSTOP = MB_ICONHAND
Private Const MB_OK = &H0&
Private Const MB_OKCANCEL = &H1&
Private Const MB_YESNO = &H4&
Private Const MB_YESNOCANCEL = &H3&
Private Const MB_ABORTRETRYIGNORE = &H2&
Private Const MB_RETRYCANCEL = &H5&
Private Const GC_CLASSNAMEMSACCESS = "OMain"
Private Const GC_CLASSNAMEMSDIALOGS = "#32770"
Private Const WM_CLOSE = &H10
Private Const strBoxTitle = "Information"
Private hWnd As Long

Public Function AddrOf(strFuncName As String) As Long
    Dim hProject As Long, lResult As Long, lpfn As Long
    Dim strID As String, strFuncNameUnicode As String
    Const NO_ERROR = 0
   
    AddrOf = 0
    strFuncNameUnicode = StrConv(strFuncName, vbUnicode)
    Call GetCurrentVbaProject(hProject)
    If hProject <> 0 Then
        lResult = GetFuncID(hProject, strFuncNameUnicode, strID)
        If lResult = NO_ERROR Then
            lResult = GetAddr(hProject, strID, lpfn)
            If lResult = NO_ERROR Then: AddrOf = lpfn
        End If
    End If
End Function

Public Sub prcMsgBox_Time()
    hWnd = FindWindow(GC_CLASSNAMEMSACCESS, vbNullString)
    SetTimer hWnd, 0&, 2000&, AddrOf("prcTimer")  '2000 Millisekunden
    MessageBox hWnd, "Diese Meldung schließt sich selbst.", strBoxTitle, _
               MB_OK Or MB_ICONINFORMATION
End Sub

Private Sub prcKillBox()
    PostMessage FindWindow(GC_CLASSNAMEMSDIALOGS, strBoxTitle), _
                WM_CLOSE, 0&, 0&
End Sub

Private Sub prcTimer(ByVal hWnd As Long, ByVal nIDEvent As Long, _
                     ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Call prcKillTimer
    Call prcKillBox
End Sub

Private Sub prcKillTimer()
    KillTimer hWnd, 0&
End Sub
Es wäre sehr nett von dir, wenn du mir mitteilen würdest, ob es funktioniert. Dann kann ich ein Häkchen in meiner Todo-Liste machen. Razz
_________________
De fontibus non est disputandum

Gruß
Nepumuk Cool
Willi Wipp
Moderator


Verfasst am:
02. Jan 2007, 14:44
Rufname:
Wohnort: Raum Wiesbaden

Re: Selbstschliessende MsgBox (II) - Re: Selbstschliessende MsgBox (II)

Nach oben
       

Nachfragen zum Thema bitte im Thema Selbstschliessende MsgBox {Nachgefragt} stellen.
_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
11. Mai 2008, 19:51
Rufname:
Wohnort: Leipzig


AW: Selbstschliessende MsgBox - AW: Selbstschliessende MsgBox

Nach oben
       Version: (keine Angabe möglich)

Hallo zusammen,

ich greif das Thema nochmals auf. Es geht um die Function MsgFenster von Willi im 2. Beitrag. Neulich kam ich mit einem Projekt, in dem die im Einsatz war, tatsächlich an einen alten Windows 98-Rechner, auf dem kein WSH installiert war, was eine äußerst ärgerliche Fehlermeldung zur Folge hatte. Daher habe ich noch einen Check für den WSH eingebaut. Falls er wirklich nicht da sein sollte, wird jedenfalls die Meldung wenigstens in einer MsgBox ausgegeben:
Code:
Public Sub MsgFenster(strPrompt As String, _
                      Optional lngAnzeigezeit As Long = 1, _
                      Optional intSymbol As Integer = vbInformation)
    Dim strUeberschrift As String
    Dim objShell As Object

    On Error Resume Next
    ' check if Windows Scripting Host Installed
    Set objShell = CreateObject("WScript.Shell")
    If Not IsObject(objShell) Then  'falls WSH nicht installiert ist, MsgBox nehmen!
        MsgBox strPrompt, Buttons:=intSymbol
      Else
        Select Case intSymbol
          Case vbQuestion:    strUeberschrift = "Frage"
          Case vbExclamation: strUeberschrift = "Achtung"
          Case vbInformation: strUeberschrift = "Information"
          Case Else:          strUeberschrift = "Fehler"
        End Select
        objShell.PopUp strPrompt, lngAnzeigezeit, strUeberschrift, intSymbol
        Set objShell = Nothing
    End If
    On Error GoTo 0
End Sub

Gruß
Lisa
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Wert in Tabelle prüfen und ggf. Msgbox 1 1748351 94 21. Dez 2012, 12:38
KlausMz Wert in Tabelle prüfen und ggf. Msgbox
Keine neuen Beiträge Access Formulare: MsgBox anzeigen, wenn kein DS im Uform 6 wimmera 302 22. Apr 2012, 13:23
wimmera MsgBox anzeigen, wenn kein DS im Uform
Keine neuen Beiträge Access Tabellen & Abfragen: Ergebnis der Abfrage in Msgbox ausgeben 8 Müllermilch 1320 04. Nov 2011, 12:03
KlausMz Ergebnis der Abfrage in Msgbox ausgeben
Keine neuen Beiträge Access Formulare: MsgBox 3 tiss90 191 23. Jun 2010, 11:23
blackoutNO MsgBox
Keine neuen Beiträge Access Formulare: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle 15 Gast_Sven 5452 28. Nov 2009, 20:18
doc007 MsgBox, wenn Eingabe ID in Formular = ID in Tabelle
Keine neuen Beiträge Access Formulare: MsgBox wenn Jahr>Format(Date, "yyyy") 2 SonnyCorleone 297 17. Sep 2009, 15:09
SonnyCorleone MsgBox wenn Jahr>Format(Date, "yyyy")
Keine neuen Beiträge Access Formulare: MsgBox statt Laufzeitfehler 1 Susi1985 897 25. Aug 2009, 10:50
ebs17 MsgBox statt Laufzeitfehler
Keine neuen Beiträge Access Formulare: Msgbox 15 Daniela_58 500 17. Dez 2008, 12:31
Daniela_58 Msgbox
Keine neuen Beiträge Access Formulare: Mit MsgBox leere Felder prüfen 6 C.Peter 602 01. Nov 2008, 19:27
C.Peter Mit MsgBox leere Felder prüfen
Keine neuen Beiträge Access Formulare: MsgBox popt nicht auf 10 friedrichshain 486 18. Mai 2007, 12:15
steffen0815 MsgBox popt nicht auf
Keine neuen Beiträge Access Formulare: msgbox soll nicht erscheinen, wenn alle textfelder leer sind 8 skater2301 703 24. Apr 2007, 21:21
skater2301 msgbox soll nicht erscheinen, wenn alle textfelder leer sind
Keine neuen Beiträge Access Formulare: MsgBox bei gleichen Werten einer in DB 1 Aphrob 497 18. Dez 2006, 16:08
xwest MsgBox bei gleichen Werten einer in DB
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln