View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Tushar Mehta Tushar Mehta is offline
external usenet poster
 
Posts: 1,071
Default Looping procedure calls userform; how to exit loop (via userform button)?

I will disagree with the suggestions you've received so far. Adding a
boolean and using an Exit For is a nothing but a disguise for a GOTO.
So, you might as well do just that. Or, design the entire procedure to
be more user-driven.

Using Tom's architecture of bContinue, use:
'...
'...
Userform1.show
if not bContinue then goto UserDone '<<<<<
'...
'...
UserDone:
'More stuff
End Sub

A more user-driven and modular design would be to 'package' your
business decisions of what is an inconsistent record and how you
process it into specific subroutines/functions. Then, show the
userform and as long as the user in interested, use the modules to
retrieve the next inconsistent record and/or process one. When the
user clicks done, you are done. Something along the lines of:

The userform would have three buttons: Update, Next, Exit. Update
updates the record based on what has been entered in the userform and
displays the next inconsistent record. Next simply displays the next
record, and Exit stops processing.

The code for the three would look like:
Update_click:
SaveUpdatedData appropriate arguments
GetNextRecord id-of-current-record, appropriate arguments

Next_click:
GetNextRecord id-of-current-record, appropriate arguments

Exit_click:
Me.Hide (or Unload Me depending on what is more appropriate)

userform_activate:
GetNextRecord 0

In the Standard module:

sub SaveUpdateData (byval appropriate arguments)
'...
end sub
sub GetNextRecord (id-of-current-Record, byRef appropriate arguments)
'...
end sub
sub getGoing
userform1.show
end sub

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article ,
says...
Hi all-
using Win2K, XL2003

I have a userform that pulls inconsistent records and allows the user match
certain items to remove the inconsistent data. I've written it so it loops
through each item in the workbook and presents them all to the user.

Now that I'm testing it to see how it works, I realize that I need an "exit"
button on the form that will allow the user to escape from the loop/userform
and do other work if needed. When I click on any of my buttons that close or
hide the userform, it returns control to the loop, and just opens the
userform back up with the next inconsistent record.

Now I've added an "exit" button, but I need to do more than just hide or
close the userform, I need to break the loop. The loop I need to break is a
for..next loop, but it is not the "closest" for..next loop- what is the best
way to exit that loop?

Module 1 'contains the code to pull records, ID inconsistent data, loop
through that data, and call the userform

Private Sub 1
declarations
For... ' <---This is the loop that I need to exit
If...
If...
For... 'another For..next loop
If...
Userform1.show
end if
exit for
end if
end if
Exit for
'more stuff
Exit Sub

Many thanks,
Keith