Put a timer on a MsgBox?

  • Thread starter Thread starter Joe 90
  • Start date Start date
J

Joe 90

Is vba able to put a timer on a MSgBox, so that OK is "clicked" after a
specified time and a macro/code can continue?

I have tried allsorts but with Msgbox one seems to get complete freezing of
the app and vba.

Any help much appreciated.

Joe
 
Joe,

Use a custom form, and set the OnTime method when you initialise it to call
a proc that times out.

See OnTime in Help for details of that method.
 
Thanks Bob, I guess you have answered my question. I was trying to avoid
custom forms but if that's the only way to go, I'll go that way :)

Joe
 
Joe,

Set a reference to "Windows Script Host Object Model" and then use
code like

Dim SH As IWshRuntimeLibrary.WshShell
Set SH = New IWshRuntimeLibrary.WshShell
SH.Popup "Hello World", 5, "Title", vbYesNo

This will show a message box for 5 seconds, and then disappear,
returning the default value (Yes, in this example).


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com (e-mail address removed)
 
returning the default value (Yes, in this example).

Not correct. If the Popup times out with no user input, the
result is -1. Sorry for any confusion.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com (e-mail address removed)
 
Chip

Many thanks, I'll give it a whirl!

Joe

Chip Pearson said:
Not correct. If the Popup times out with no user input, the
result is -1. Sorry for any confusion.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com (e-mail address removed)
 
Hi.

Try that.

Sub TimedMessage()
Const Title As String = "Self closing message box"
Const Delay As Byte = 2 ' Tps d'affichage en secondes
Const wButtons As Integer = 16 ' Boutons + icone
Dim wsh As Object, msg As String
Set wsh = CreateObject("WScript.Shell")
msg = Space(10) & "Bonjour," & vbLf & vbLf & "Nous sommes le " & Date
wsh.Popup msg, Delay, Title, wButtons
Set wsh = Nothing
End Sub

If you want no button
set Const wButtons As Integer = 7 + 16

Alain CROS.
 
I needed close a workbook if the user not do workING with it, with two subs i can resolve it
1-put this code into ThisWorkbook
Private Sub Workbook_Open()
'CALL TO "TIME MESSAGE" AFTER THEN 10 MINUTES
Application.OnTime Now + TimeValue("00:10:00"), "TimedMessage"
End Sub
2-put this code into a module

Sub TimedMessage()
Const Title As String = "Self closing message box"
Const Delay As Byte = 5 ' Tps d'affichage en secondes
Const wButtons As Integer = 17 ' Boutons + icone

Dim wsh As Object, msg As String
Set wsh = CreateObject("WScript.Shell")
msg = Space(15) & "Hello," & vbLf & vbLf & "Press ok if you need more time "
wsh.Popup msg, Delay, Title, wButtons
If wsh.Popup(msg, Delay, Title, wButtons) = vbOK Then

Application.OnTime Now + TimeValue("00:10:00"), "TimedMessage"

Else
'SAVE AND CLOSE
Application.DisplayAlerts = False
ThisWorkbook.Save
ThisWorkbook.Close False
End If

Set wsh = Nothing
'
End Sub
when the workbook is opened a timer is launched, and at 10 minutes later (you can change this value) the message appears
 
Back
Top