stop calling sub Intentionally without error.

  • Thread starter Thread starter BRC
  • Start date Start date
B

BRC

Hi all,
I am trying to find a way to stop all sub's from running if certain
conditions are encountered. sin the example below, if row count is
less than 50 I would like to stop sub_1 from running. All of the
posts i find on this subject are related to errors. this isn't really
an error just a condition. Thanks for any advice. BRC

sub _1()
call sub_2
do some stuff
end sub

sub_2()
if range ("somerange").rows.count <50 then
msgbox("Less than 50 rows")
exit sub
else
end sub
 
You should write your Sub_2 as a Function procedure that returns True
if execution is to continue or False if execution should cease. E.g.,


Function Proc2()
If Range("SomeRange").Rows.Count < 50 Then
Proc2 = False
Else
Proc2 = True
End If
End Function

Then, in Sub_1,

Sub Sub_1()
Dim Continue As Boolean
Continue = Proc2()
If Continue = False Then
Exit Sub
End If
' more code
End Sub

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]
 
Instead of performing the "less than 50" test in sub_2, why not do it in
sub_1?

Sub sub_1()
If Range("somerange").Rows.Count < 50 Then
MsgBox "Less than 50 rows!"
Exit Sub
End If
Call sub_2
' do some stuff
End Sub

Sub sub_2()
' do some stuff
End Sub
 
You should write your Sub_2 as a Function procedure that returns True
if execution is to continue or False if execution should cease. E.g.,

Function Proc2()
        If Range("SomeRange").Rows.Count < 50 Then
                Proc2 = False
        Else
                Proc2 = True
        End If
End Function

Then, in Sub_1,

Sub Sub_1()
        Dim Continue As Boolean
        Continue = Proc2()
        If Continue = False Then
                Exit Sub
        End If
        ' more code
End Sub

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLCwww.cpearson.com
[email on web site]

Hi all,
I am trying to find a way to stop all sub's from running if certain
conditions are encountered. sin the example below, if row count is
less than 50 I would like to stop sub_1 from running.  All of the
posts i find on this subject are related to errors. this isn't really
an error just a condition.  Thanks for any advice. BRC
sub _1()
call sub_2
do some stuff
end sub
sub_2()
if range ("somerange").rows.count <50 then
msgbox("Less than 50 rows")
exit sub
else
end sub- Hide quoted text -

- Show quoted text -

thank you for the quick responses. I thought i read somewhere that
using smaller sections of code where more efficient and make debug
easier. also I thouht that having several sub routines to do
differnt things might be a better approach then writing one long
macro. Given all that, Chip I am not sure how Sub Sub_1() in your
example knows that the Function Proc2() ended in true (or false).
Thanks again for the help
 
You should write your Sub_2 as a Function procedure that returns True
if execution is to continue or False if execution should cease. E.g.,
Function Proc2()
        If Range("SomeRange").Rows.Count < 50 Then
                Proc2 = False
        Else
                Proc2 = True
        End If
End Function
Then, in Sub_1,
Sub Sub_1()
        Dim Continue As Boolean
        Continue = Proc2()
        If Continue = False Then
                Exit Sub
        End If
        ' more code
End Sub
Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLCwww.cpearson.com
[email on web site]
Hi all,
I am trying to find a way to stop all sub's from running if certain
conditions are encountered. sin the example below, if row count is
less than 50 I would like to stop sub_1 from running.  All of the
posts i find on this subject are related to errors. this isn't really
an error just a condition.  Thanks for any advice. BRC
sub _1()
call sub_2
do some stuff
end sub
sub_2()
if range ("somerange").rows.count <50 then
msgbox("Less than 50 rows")
exit sub
else
end sub- Hide quoted text -
- Show quoted text -

thank you for the quick responses.  I thought i read somewhere that
using smaller sections of code where more efficient and make debug
easier.  also I thouht that having several sub routines  to do
differnt things might be a better approach then writing one long
macro.  Given all that,  Chip I am not sure how Sub Sub_1() in your
example knows that the Function Proc2() ended in true (or false).
Thanks again for the help- Hide quoted text -

- Show quoted text -

Never mind, I see how that happens. Thanks again.
 
Back
Top