ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Stop running macro button, like Ctrl-Break button (https://www.excelbanter.com/excel-programming/422840-re-stop-running-macro-button-like-ctrl-break-button.html)

Ronald R. Dodge, Jr.[_2_]

Stop running macro button, like Ctrl-Break button
 
Instead of using Pause, you may want to use Application.OnTime command.
This will mean you will need to setup multiple Subs (One for each
worksheet). See example below that replaces your code:

Dim m_strNextProcedureToRun As String, m_dteNextTimeToRunNextProcedure As
Date

Sub pcdSlideShow()
Worksheets(Array(1, 2, 3, 4, 5, 6, 7, 8)).Select
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHeadings = False 'Remove Row & Column headings
Application.DisplayFormulaBar = False
m_strNextProcedureToRun = "pcdShowSheet1"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:01")
pcdRunNextProcess
End Sub
Sub pcdShowSheet1()
If Worksheets("TOTAL").Range("C42").Value2 < 39 Then
Refresh
Sheets("Sheet1").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet2"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End If
End Sub
Sub pcdShowSheet2()
Refresh
Sheets("Sheet2").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet3"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdShowSheet3()
Refresh
Sheets("Sheet3").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet4"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdShowSheet4()
Refresh
Sheets("Sheet4").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet5"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdShowSheet5()
Refresh
Sheets("Sheet5").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet6"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdShowSheet6()
Refresh
Sheets("Sheet6").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet7"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdShowSheet7()
Refresh
Sheets("Sheet7").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet8"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdShowSheet8()
Refresh
Sheets("Sheet8").Select
Range("A1").Select
m_strNextProcedureToRun = "pcdShowSheet1"
m_dteNextTimeToRunNextProcedure = Now + VBA.TimeValue("00:00:05")
pcdRunNextProcess
End Sub
Sub pcdRunNextProcess(Optional ByVal l_bolSchedule = True)
Application.OnTime m_dteNextTimeToRunNextProcedure,
m_strNextProcedureToRun As String, _
m_dteNextTimeToRunNextProcedure + VBA.TimeValue("00:00:05"),
l_bolSchedule
End Sub
Sub pcdCancelNextProcedure()
pcdRunNextProcess False
End Sub

--
Thanks,

Ronald R. Dodge, Jr.
Production Statistician
Master MOUS 2000
"h2fcell" wrote in message
...
Hello,
I have a button on the "Quick Access Toolbar" of an Excel 2007 workbook
that
starts a slide show and loops through 8 sheets continuously until a linked
cell equals 39. I would like to add another button to the "Quick Access
Toolbar" that stops the running slide show like Ctrl-Break does without
the
Visual Basic window popping up with the message "Code execution has been
interrupted".

Any suggestions?

Below is my code.

Sub SlideShow()

Worksheets(Array(1, 2, 3, 4, 5, 6, 7, 8)).Select
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHeadings = False 'Remove Row & Column headings
Application.DisplayFormulaBar = False
Do While Worksheets("TOTAL").Range("C42").Value < 39
Refresh
Sheets("Sheet1").Select
Range("A1").Select
Pause
Refresh
Sheets("Sheet2").Select
Range("A1").Select
Pause
Refresh
Sheets("Sheet3").Select
Range("A1").Select
Pause
Refresh
Sheets("Sheet4").Select
Range("A1").Select
Pause
Refresh
Sheets("Sheet5").Select
Range("A1").Select
Pause
Refresh
Sheets("Sheet6").Select
Range("A1").Select
Pause
Refresh
Sheets("Sheet7").Select
Range("A1").Select
Pause
Refresh
Sheets("TOTAL").Select
Range("A1").Select
Pause
Loop

End Sub





All times are GMT +1. The time now is 01:24 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com