how to exit sub

X

xiang

I got a macro something like
sub format()
application.run "Myworkbook.xls!import"
application.run "Myworkbook.xls!delrow"
application.run "Myworkbook.xls!delcol"
application.run "Myworkbook.xls!sort"
end sub

private sub import()
........
end sub
private sub delrow()
........
end sub
private sub delcol()
........
end sub
private sub sort()
........
end sub

the firest private sub is trying to open dialog box b
GetOpenFilename.
this macro runs good. My question is how can I exit the main sub when
the user click "cancel" button in openfile-dialog box rather than onl
exit the first private sub.

any help would be appreciate
 
T

Tom Ogilvy

sub format()
Dim res as Variant
res = application.run( "Myworkbook.xls!import")
if vartype(res) = vbBoolean then exit sub
Workbooks.Open res
application.run "Myworkbook.xls!delrow"
application.run "Myworkbook.xls!delcol"
application.run "Myworkbook.xls!sort"
end sub

Function import() as Variant
Dim fName as Variant
fname = Application.GetOpenFileName()
Import = fName
end sub

sub delrow()
........
end sub
sub delcol()
........
end sub
sub sort()
........
end sub

If import, delrow, delcol and sort are in the same workbook as Format, then
you don't need to use appliction run, you can do

res = Import()
delrow
delcol
sort

I wouldn't use Format and Sort as procedure or function names as Excel/VBA
already have build in functions with these names.
 
X

xiang

many thanks, Tom

but when I tried to run
res = application.run( "Myworkbook.xls!import")
res returns Nothing instead of True or False
I don't konw why. could you give any more hints?
 
X

xiang

thanks, Tom
your code works perfectly.
when import() is a function, res returns "false".
how about if the import() is a private sub, how could we let re
returns "false"?
res = application.run ( "Myworkbook.xls!import")
this seems it does not work, because res returns Nothing.

one more question, you said I can use the following codes if all sub i
same workbook,

res = Import()
delrow
delcol
sort

do you mean the following lines will work?

sub format()

res = Import()
if vartype(res) = vbBoolean then exit sub
Workbooks.Open res
delrow
delcol
sort

end sub


I will try.

appreciate your big help
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top