ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to get looping VBA code to respond to events on worksheet (https://www.excelbanter.com/excel-programming/413322-how-get-looping-vba-code-respond-events-worksheet.html)

monkeyboy[_2_]

How to get looping VBA code to respond to events on worksheet
 
Hello,

I have some code of the form

do while not g_Paused
bunch of calls
...
loop

where I'd like the variable g_Paused to be toggled by a button on the
worksheet. The only way I can seem to get the code to respond to the
button click is to use

do while not g_Paused
bunch of calls
...
ThisWorkbook.Worksheets("Name").Activate
DoEvents
loop

But this is pretty slow and causes the sheet to flicker...is there a
better method?


PS


I'm using buttons from the Control Toolbox


Thank you.



incre-d

How to get looping VBA code to respond to events on worksheet
 
A quick way is to create a userform, with a button that sets the
g_paused = true

open the form show(vbmodeless)

then before your loop do
application.screenupdating = false

after your button is pressed

application.screenupdating = true.



"monkeyboy" wrote:

Hello,

I have some code of the form

do while not g_Paused
bunch of calls
...
loop

where I'd like the variable g_Paused to be toggled by a button on the
worksheet. The only way I can seem to get the code to respond to the
button click is to use

do while not g_Paused
bunch of calls
...
ThisWorkbook.Worksheets("Name").Activate
DoEvents
loop

But this is pretty slow and causes the sheet to flicker...is there a
better method?


PS


I'm using buttons from the Control Toolbox


Thank you.




monkeyboy[_2_]

How to get looping VBA code to respond to events on worksheet
 
Sorry, I should have been more explicit. I have a button on the
worksheet that sets g_Paused to TRUE, then calls the loop procedure. I
also have an "Pause" button on the worksheet that sets g_Paused to
FALSE. Once I enter the loop procedure however, the code no longer
responds to buttons on the worksheet, unless I say
"ThisWorkbook.Worksheets("Name").Activate ". When in the IDE, it
appears as if the event is firing as I can see the worksheet module
flicker when I push the "Pause" button, but the global g_Paused
doesn't seem to be set to FALSE? I have my code arranged in several
modules, with PUBLIC procedures and PUBLIC globals. I'll try using a
Form, but I don't understand what is stopping the worksheet event from
setting the variable...


All times are GMT +1. The time now is 08:20 PM.

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