Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
As i know, DoEvents simply adds WM_PAINT message to windows queue.
So you are rights. Windows decides when to pass this message to application. XP wrote: Eugene, Yes, all you would need to do is add: DoEvents wherever desired. This causes regular macro execution to take second priority while anything in the buffer - for example, repainting the screen, once that is done, the macro continues as normal. However, and correct me if I'm wrong Tom, but I know at least in past versions of XL I have noted that DoEvents does not always fire in code order, i.e. even though it may appear as the fourth or fifth instruction, it may fire first. At least I've had that issue before. To get around that, I put "DoEvents" in a second function by itself and call it when needed and this seems to ensure that it runs when ordered. For example: Sub Test_Program() <your code Call ExecuteDoEvents Application.ScreenUpdating <your other code End Sub Private Function ExecuteDoEvents() DoEvents End Function HTH "eugene" wrote: Hi Tom, Thanks loads. I am not sure what you mean by "a doevents." Sounds like it is more complicated than simply adding the line "DoEvents." I tried the latter but it doesn't seem to help. The help info in MS help is unclear to me. So I would appreciate a bit more help. --- eugene "Tom Ogilvy" wrote: Try adding a doevents before setting screenupdating to True. -- Regards, Tom Ogilvy "eugene" wrote: Hi, is anyone aware of whether Application.ScreenUpdating = True also updates settings on objects created using the control toolbox)? I am running into a problem where not everything on the screen updates all the time and from the pattern I am noticing, it seems that it always shows changes in the worksheet itself, but sometimes does not show changes to objects on the worksheet. Details: My program runs in two modes - "one screen at a time" or "loop through many screens." I set screenupdating to false no matter what. In "one screen at a time" mode, everything displays as it should at the end of each run. In this mode I don't explicitly update the screen but rely instead on the fact that the screen updates when the sub ends. In "loop through many screens" mode, I have the "do work" sub called from a looping macro. Now I explicitly state screenupdating = true at the end of each loop and I have a "wait" function that halts the running of the macro allows one to see the display for a short while. All the changes occur (I stepped through the code), but the display is not right. The worksheet changes are there, but changes made to something like the caption of a toggle button do not display. My code is extremely long and and won't run without the data residing in the worksheet. So I can't post it all. I am quite certain, however, that the problem has nothing to do with the code since everything works right when I step through the code. (In step into mode, the screen of course updates properly as it always does.) Is anyone out there aware of what the issue might be and how I might be able to fix it? -- eugene |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Search for 2 true arguments and return true or false | Excel Discussion (Misc queries) | |||
Function to return True/False if all are validated as True by ISNU | Excel Worksheet Functions | |||
ScreenUpdating stays TRUE no matter what? | Excel Programming | |||
Screenupdating is always true | Excel Programming | |||
ScreenUpdating automatically resets to True | Excel Programming |