• 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.

Opgelost alternatief voor MSGbox

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Goedemorgen,

Ik ben op zoek naar een alternatief voor een Msgbox-melding. Ik zou willen voorkomen dat er op "OK" geklikt moet worden om een melding te laten verdwijnen. Het alternatief dat ik zoek is dat een melding na een (liefst zelf in te stellen) aantal seconden vanzelf verdwijnt. En ondertussen "gewoon" door kunnen werken heeft de voorkeur.
 
Je kan een userform maken welke je kunt hiden/unhiden.

of gebruik deze dll


Code:
Private Declare PtrSafe Function MessageBoxTimeout Lib "user32.dll" Alias "MessageBoxTimeoutW" ( _
    ByVal hwnd As LongPtr, _
    ByVal lpText As String, _
    ByVal lpCaption As String, _
    ByVal uType As Long, _
    ByVal wLanguageId As Long, _
    ByVal dwMilliseconds As Long) As Long

Sub ShowMessage()
 result = MessageBoxTimeout(0, "blabls", "Auto-Close Message Box", vbOKOnly + vbInformation, 0, 2000)
End Sub
 
Dank je JEC.

kan je een toelichting geven hoe te gebruiken in VBA-coding ?
 
Belangrijk is wanneer de MsgBox moet verschijnen.
Hallo Albert,

ik doe, in VBA, een vergelijking waarbij ik als resultaat eventueel een melding wil geven zonder dat (zoals bij bv MSGbox) op "OK" gedrukt hoeft te worden. De melding zou na een (bij voorkeur een in te stellen) korte tijd vanzelf moeten verdwijnen.
 
En wat vergelijk je dan ?, plaats eens een voorbeeldbestandje met uitleg.
 
Code:
Sub M_snb()
   createobject("wscript.shell").popup "melding",3
End Sub
 
Nog eentje:
Code:
Function MsgBoxTmd(CloseAfter As Integer)
    Dim InfoBox As Object
    Set InfoBox = CreateObject("WScript.Shell")
    res = InfoBox.Popup("Deze box sluit na " & CloseAfter & " seconden", CloseAfter, "Dit is de titel", 0)
End Function

Aanroep:
Code:
MsgBoxTmd(5)
De MsgBox sluit dan na de opgegeven 5 seconden.

Het voordeel van die van AHulpje is dat je volledig vrij bent in het ontwerp van het formulier.
 
Die shell benadering laat je niet toe om door te werken
 
Klopt.
Maar dat wordt in #1 als voorkeur genoemd, niet als eis.
In dat geval heeft die van AHulpje mijn voorkeur, mede vanwege de vrijheid van ontwerp.

TS kan kiezen :)
 
Hierbij een voorbeeld met een vergelijking, moet je wel tot tien kunnen tellen:
resteert naar jou de vraag: hoe / waar de tekst / inhoud van de boodschap aan te passen ?
Nog eentje:
Code:
Function MsgBoxTmd(CloseAfter As Integer)
    Dim InfoBox As Object
    Set InfoBox = CreateObject("WScript.Shell")
    res = InfoBox.Popup("Deze box sluit na " & CloseAfter & " seconden", CloseAfter, "Dit is de titel", 0)
End Function

Aanroep:
Code:
MsgBoxTmd(5)
De MsgBox sluit dan na de opgegeven 5 seconden.

Het voordeel van die van AHulpje is dat je volledig vrij bent in het ontwerp van het formulier.
dank je edmoor.
ik heb je voorbeeld #10 uitgeprobeerd maar de boodschap verdwijnt alleen na klik op OK

doorwerken is zeer wenselijk, eigenlijk wel een eis.
 
En wat vergelijk je dan ?, plaats eens een voorbeeldbestandje met uitleg.
AD1957:
#7 is niet zo relevant - bv is een bestand (naam) gevonden ? of is datum1 gelijk aan datum2 ?
Het gaat om de melding / alternatief voor het op OK klikken resp. het "vanzelf" verdwijnen van de melding na een in te stellen aantal seconden.
 
Laatst bewerkt:
Code:
Sub M_snb()
   createobject("wscript.shell").popup "melding",3
End Sub
dank je snb

ook voor jouw oplossing #9 geldt dat de melding niet "vanzelf" verdwijnt na (in dit geval denk ik) 3 seconden. Hier moet ik ook op "OK" klikken
 
Heb het ook wel eens gemerkt. Het is niet geheel stabiel. Vond het ook merkwaardig
 
Dan blijft het voorstel van AHulpje over.
Die werkt prima.
 
Voor de aanpassing van de tekst in de code van AHulpje lijkt het me toch wel belangrijk
om te weten wanneer userform1 moet openen.
 
Op basis van Ahulpje aangeleverde VBA #8 ben ik verder gegaan.
Werkt, in principe, goed echter in de boodschap die verschijnt staat bovenaan
de titel "UserForm1". De timer werkt.
Hoe kan ik in de titel van UserForm1 bv de tekst "Waarschuwing" krijgen bij
uitvoering van de code ?
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan