Group:  Microsoft Word » microsoft.public.word.vba.beginners
Thread: Beginners question: how to stop / abort execution of vba program

DotNetBag
.NET Development Newsgroups

HTVi
TV Discussion Newsgroups

Our Hot Pick: Rising Antivirus 2006 - Certified by TUV & Checkmark! Get 10% discount by entering this coupon code: ONDISCOUNT10
Rising Antivirus 2006

Beginners question: how to stop / abort execution of vba program
"Rainer" <rainer.bitschi[ at ]bigfoot.com> 04.06.2006 15:59:07
Hi,

how can I abort / cancel a vba program immediately, without returning to the
calling procedure?
I already have a rather complex vba application with many sub's and
functions.
The only thing I found by now is the "stop" command, but it enters debugging
mode, so this is not what I want.
i want to have something like this:

Sub Main
CheckValues
MsgBox "Completed successfully"
End Sub

Sub CheckValues
If SomeVar = SomeValue Then
MsgBox "Error"
'now stop it
End If
End Sub


Re: Beginners question: how to stop / abort execution of vba program
"Ardus Petus" <ardus.petus[ at ]laposte.net> 04.06.2006 16:04:59
Use the End instruction
Just End, not End Sub or End Function

HTH
--
AP

"Rainer" <rainer.bitschi[ at ]bigfoot.com> a écrit dans le message de news:
eH62M$%23hGHA.3588[ at ]TK2MSFTNGP02.phx.gbl...
[Quoted Text]
> Hi,
>
> how can I abort / cancel a vba program immediately, without returning to
> the calling procedure?
> I already have a rather complex vba application with many sub's and
> functions.
> The only thing I found by now is the "stop" command, but it enters
> debugging mode, so this is not what I want.
> i want to have something like this:
>
> Sub Main
> CheckValues
> MsgBox "Completed successfully"
> End Sub
>
> Sub CheckValues
> If SomeVar = SomeValue Then
> MsgBox "Error"
> 'now stop it
> End If
> End Sub
>
>


Re: Beginners question: how to stop / abort execution of vba program
"Jonathan West" <jwest[ at ]mvps.org> 04.06.2006 16:10:32
Hi Rainer

I would work it like this

Sub Main
If CheckValues() Then
MsgBox "Completed successfully"
End If
End Sub

Function CheckValues() As Boolean
If SomeVar = SomeValue Then
MsgBox "Error"
Exit Function
End If
CheckValues = True
End Function


--
Regards
Jonathan West - Word MVP
www.intelligentdocuments.co.uk
Please reply to the newsgroup



"Rainer" <rainer.bitschi[ at ]bigfoot.com> wrote in message
news:eH62M$%23hGHA.3588[ at ]TK2MSFTNGP02.phx.gbl...
[Quoted Text]
> Hi,
>
> how can I abort / cancel a vba program immediately, without returning to
> the calling procedure?
> I already have a rather complex vba application with many sub's and
> functions.
> The only thing I found by now is the "stop" command, but it enters
> debugging mode, so this is not what I want.
> i want to have something like this:
>
> Sub Main
> CheckValues
> MsgBox "Completed successfully"
> End Sub
>
> Sub CheckValues
> If SomeVar = SomeValue Then
> MsgBox "Error"
> 'now stop it
> End If
> End Sub
>
>


Re: Beginners question: how to stop / abort execution of vba program
"Jonathan West" <jwest[ at ]mvps.org> 04.06.2006 16:40:51

"Ardus Petus" <ardus.petus[ at ]laposte.net> wrote in message
news:O6ZtHD$hGHA.4504[ at ]TK2MSFTNGP03.phx.gbl...
[Quoted Text]
> Use the End instruction
> Just End, not End Sub or End Function

In the VB6 newsgroups, that kind of advice can start a flamewar:-)

The problem with using End is well described in the VBA help file.

"Note The End statement stops code execution abruptly, without invoking
the Unload, QueryUnload, or Terminate event, or any other Visual Basic code.
Code you have placed in the Unload, QueryUnload, and Terminate events of
forms and class modules is not executed. Objects created from class modules
are destroyed, files opened using the Open statement are closed, and memory
used by your program is freed. Object references held by other programs are
invalidated.

The End statement provides a way to force your program to halt. For normal
termination of a Visual Basic program, you should unload all forms. Your
program closes as soon as there are no other programs holding references to
objects created from your public class modules and no code executing."


--
Regards
Jonathan West - Word MVP
www.intelligentdocuments.co.uk
Please reply to the newsgroup



Re: Beginners question: how to stop / abort execution of vba program
"Bob Phillips" <bob.NGs[ at ]somewhere.com> 04.06.2006 19:34:23
But VBA ain't VB6, and all the things you mention are probably exactly what
he wants to happen, everything cleared down. The host application is still
running.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Jonathan West" <jwest[ at ]mvps.org> wrote in message
news:eRrKkW$hGHA.1000[ at ]TK2MSFTNGP04.phx.gbl...
[Quoted Text]
>
> "Ardus Petus" <ardus.petus[ at ]laposte.net> wrote in message
> news:O6ZtHD$hGHA.4504[ at ]TK2MSFTNGP03.phx.gbl...
> > Use the End instruction
> > Just End, not End Sub or End Function
>
> In the VB6 newsgroups, that kind of advice can start a flamewar:-)
>
> The problem with using End is well described in the VBA help file.
>
> "Note The End statement stops code execution abruptly, without invoking
> the Unload, QueryUnload, or Terminate event, or any other Visual Basic
code.
> Code you have placed in the Unload, QueryUnload, and Terminate events of
> forms and class modules is not executed. Objects created from class
modules
> are destroyed, files opened using the Open statement are closed, and
memory
> used by your program is freed. Object references held by other programs
are
> invalidated.
>
> The End statement provides a way to force your program to halt. For normal
> termination of a Visual Basic program, you should unload all forms. Your
> program closes as soon as there are no other programs holding references
to
> objects created from your public class modules and no code executing."
>
>
> --
> Regards
> Jonathan West - Word MVP
> www.intelligentdocuments.co.uk
> Please reply to the newsgroup
>
>
>


Re: Beginners question: how to stop / abort execution of vba program
"Jezebel" <warcrimes[ at ]whitehouse.gov> 04.06.2006 22:23:43
Actually, it's more serious than that, on at least two counts --

1. Using End will cause the application to crash under some (hard to
predict) circumstances. Add-ins and class modules can be strangely affected
by the mere presence of the End statement (even if you don't call the
function that contains it).

2. As a matter of code design, a sub-procedure has no knowledge of the
context in which it is called. The calling procedure may well have some
cleaning up to do -- such as returning the app to visibility, re-enabling
things, etc.





"Bob Phillips" <bob.NGs[ at ]somewhere.com> wrote in message
news:OxxtL4AiGHA.4368[ at ]TK2MSFTNGP03.phx.gbl...
[Quoted Text]
> But VBA ain't VB6, and all the things you mention are probably exactly
> what
> he wants to happen, everything cleared down. The host application is still
> running.
>
> --
> HTH
>
> Bob Phillips
>
> (replace somewhere in email address with gmail if mailing direct)
>
> "Jonathan West" <jwest[ at ]mvps.org> wrote in message
> news:eRrKkW$hGHA.1000[ at ]TK2MSFTNGP04.phx.gbl...
>>
>> "Ardus Petus" <ardus.petus[ at ]laposte.net> wrote in message
>> news:O6ZtHD$hGHA.4504[ at ]TK2MSFTNGP03.phx.gbl...
>> > Use the End instruction
>> > Just End, not End Sub or End Function
>>
>> In the VB6 newsgroups, that kind of advice can start a flamewar:-)
>>
>> The problem with using End is well described in the VBA help file.
>>
>> "Note The End statement stops code execution abruptly, without invoking
>> the Unload, QueryUnload, or Terminate event, or any other Visual Basic
> code.
>> Code you have placed in the Unload, QueryUnload, and Terminate events of
>> forms and class modules is not executed. Objects created from class
> modules
>> are destroyed, files opened using the Open statement are closed, and
> memory
>> used by your program is freed. Object references held by other programs
> are
>> invalidated.
>>
>> The End statement provides a way to force your program to halt. For
>> normal
>> termination of a Visual Basic program, you should unload all forms. Your
>> program closes as soon as there are no other programs holding references
> to
>> objects created from your public class modules and no code executing."
>>
>>
>> --
>> Regards
>> Jonathan West - Word MVP
>> www.intelligentdocuments.co.uk
>> Please reply to the newsgroup
>>
>>
>>
>
>


Re: Beginners question: how to stop / abort execution of vba program
"Bob Phillips" <bob.NGs[ at ]somewhere.com> 05.06.2006 08:03:05


"Jezebel" <warcrimes[ at ]whitehouse.gov> wrote in message
news:OtzQKWCiGHA.1936[ at ]TK2MSFTNGP04.phx.gbl...
[Quoted Text]
> Actually, it's more serious than that, on at least two counts --
>
> 1. Using End will cause the application to crash under some (hard to
> predict) circumstances. Add-ins and class modules can be strangely
affected
> by the mere presence of the End statement (even if you don't call the
> function that contains it).


I have never seen that, and would be interested in hearing of such
circumstances.


> 2. As a matter of code design, a sub-procedure has no knowledge of the
> context in which it is called. The calling procedure may well have some
> cleaning up to do -- such as returning the app to visibility, re-enabling
> things, etc.


That's just a question of good/bad coding, nothing to do with End. It would
be just as easy to let code finish in the normal manner without doing those
things, so and resetting would be no more, no less, applicable to a forced
end as a non-forced end. Excel/VBA won't do it for you.


Re: Beginners question: how to stop / abort execution of vba program
"Jezebel" <warcrimes[ at ]whitehouse.gov> 05.06.2006 08:34:28

[Quoted Text]
>
> I have never seen that, and would be interested in hearing of such
> circumstances.

Google will find you plenty.



>
> That's just a question of good/bad coding, nothing to do with End. It
> would
> be just as easy to let code finish in the normal manner without doing
> those
> things, so and resetting would be no more, no less, applicable to a forced
> end as a non-forced end. Excel/VBA won't do it for you.
>

If process A calls process B, and process B uses an End statement, then the
remainder of process A does not run. This is *bad* coding, and *everything*
to so with End.


Re: Beginners question: how to stop / abort execution of vba program
"Jezebel" <warcrimes[ at ]whitehouse.gov> 05.06.2006 08:40:11
Using End in a VBA application also clears any global variables. Any class
objects referenced by those variables are destroyed without notice, and
without the firing the class's Terminate event.



Re: Beginners question: how to stop / abort execution of vba program
"Bob Phillips" <bob.NGs[ at ]somewhere.com> 05.06.2006 09:14:54
I know, but I would assume that anyone wanting to use End would be wanting
just that effect. As to your previous point, as I said previously, it is bad
coding, but not End causing the problem, that problem will occur if the code
is not self-tidying, with or without End.

Your advice about Google doesn't help me much, what search criteria do I
use. End and Excel crash gets millions, but none that I can see about being
caused by an End statement (Problem is that End is ubiquitous, End If, End
Sub, etc.)

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Jezebel" <warcrimes[ at ]whitehouse.gov> wrote in message
news:OdKlouHiGHA.4044[ at ]TK2MSFTNGP03.phx.gbl...
[Quoted Text]
> Using End in a VBA application also clears any global variables. Any class
> objects referenced by those variables are destroyed without notice, and
> without the firing the class's Terminate event.
>
>
>


Re: Beginners question: how to stop / abort execution of vba program
"Karl E. Peterson" <karl[ at ]mvps.org> 05.06.2006 18:12:17
Bob Phillips wrote:
[Quoted Text]
>> Using End in a VBA application also clears any global variables. Any
>> class objects referenced by those variables are destroyed without
>> notice, and without the firing the class's Terminate event.
>
> I know, but I would assume that anyone wanting to use End would be
> wanting just that effect.

Similarly, one who wants a car to stop has the option of using the most
convenient brick wall or bridge abutment. They will, indeed, achieve their
objective.
--
Working without a .NET?
http://classicvb.org/


Re: Beginners question: how to stop / abort execution of vba program
"Jean-Guy Marcil" <NoSpam[ at ]LeaveMeAlone> 05.06.2006 20:45:13
Karl E. Peterson was telling us:
Karl E. Peterson nous racontait que :

[Quoted Text]
> Bob Phillips wrote:
>>> Using End in a VBA application also clears any global variables. Any
>>> class objects referenced by those variables are destroyed without
>>> notice, and without the firing the class's Terminate event.
>>
>> I know, but I would assume that anyone wanting to use End would be
>> wanting just that effect.
>
> Similarly, one who wants a car to stop has the option of using the
> most convenient brick wall or bridge abutment. They will, indeed,
> achieve their objective.

I, for one, prefer driving into trees, but I must admit that walls are more
convenient, especially in the city.

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP
jmarcilREMOVE[ at ]CAPSsympatico.caTHISTOO
Word MVP site: http://www.word.mvps.org


Re: Beginners question: how to stop / abort execution of vba program
"Karl E. Peterson" <karl[ at ]mvps.org> 05.06.2006 20:48:03
Jean-Guy Marcil wrote:
[Quoted Text]
> Karl E. Peterson was telling us:
> Karl E. Peterson nous racontait que :
>
>> Bob Phillips wrote:
>>>> Using End in a VBA application also clears any global variables.
>>>> Any class objects referenced by those variables are destroyed
>>>> without notice, and without the firing the class's Terminate event.
>>>
>>> I know, but I would assume that anyone wanting to use End would be
>>> wanting just that effect.
>>
>> Similarly, one who wants a car to stop has the option of using the
>> most convenient brick wall or bridge abutment. They will, indeed,
>> achieve their objective.
>
> I, for one, prefer driving into trees, but I must admit that walls
> are more convenient, especially in the city.

They're also more abrupt, hastening the desired outcome! Trees sorta bend,
eh?
--
Working without a .NET?
http://classicvb.org/


Re: Beginners question: how to stop / abort execution of vba program
"Jezebel" <warcrimes[ at ]whitehouse.gov> 05.06.2006 21:12:44
Bob, really, this has been debated and resolved in times *long* past. Do a
Google on something like VBA +"End statement" to get chapter and verse on
it.



"Bob Phillips" <bob.NGs[ at ]somewhere.com> wrote in message
news:OrnuYCIiGHA.4304[ at ]TK2MSFTNGP05.phx.gbl...
[Quoted Text]
>I know, but I would assume that anyone wanting to use End would be wanting
> just that effect. As to your previous point, as I said previously, it is
> bad
> coding, but not End causing the problem, that problem will occur if the
> code
> is not self-tidying, with or without End.
>
> Your advice about Google doesn't help me much, what search criteria do I
> use. End and Excel crash gets millions, but none that I can see about
> being
> caused by an End statement (Problem is that End is ubiquitous, End If, End
> Sub, etc.)
>
> --
> HTH
>
> Bob Phillips
>
> (replace somewhere in email address with gmail if mailing direct)
>
> "Jezebel" <warcrimes[ at ]whitehouse.gov> wrote in message
> news:OdKlouHiGHA.4044[ at ]TK2MSFTNGP03.phx.gbl...
>> Using End in a VBA application also clears any global variables. Any
>> class
>> objects referenced by those variables are destroyed without notice, and
>> without the firing the class's Terminate event.
>>
>>
>>
>
>


Re: Beginners question: how to stop / abort execution of vba program
Dave Peterson <petersod[ at ]verizonXSPAM.net> 05.06.2006 22:11:56
I don't recall ever seeing a post that mentioned that excel crashed when "End"
(by itself) was used.

Maybe you could search google and share one example that caused excel to crash.

I searched google for:
VBA "end statement" crash
and got 7 hits.

I didn't see anything in those 7 threads that supported your position. There
were mentions that workbooks/addins may crash--but not the excel application
itself.

But I did see a quote from Tom Ogilvy that was nice:

To purveyors of the END statement it will be said: "Bother your neighbors,
especially those who are clients and coworkers, and you will be punished;
leave others untroubled by your vice and you will be viewed with disapproval
by those who would write code but left alone."



Jezebel wrote:
[Quoted Text]
>
> Bob, really, this has been debated and resolved in times *long* past. Do a
> Google on something like VBA +"End statement" to get chapter and verse on
> it.
>
> "Bob Phillips" <bob.NGs[ at ]somewhere.com> wrote in message
> news:OrnuYCIiGHA.4304[ at ]TK2MSFTNGP05.phx.gbl...
> >I know, but I would assume that anyone wanting to use End would be wanting
> > just that effect. As to your previous point, as I said previously, it is
> > bad
> > coding, but not End causing the problem, that problem will occur if the
> > code
> > is not self-tidying, with or without End.
> >
> > Your advice about Google doesn't help me much, what search criteria do I
> > use. End and Excel crash gets millions, but none that I can see about
> > being
> > caused by an End statement (Problem is that End is ubiquitous, End If, End
> > Sub, etc.)
> >
> > --
> > HTH
> >
> > Bob Phillips
> >
> > (replace somewhere in email address with gmail if mailing direct)
> >
> > "Jezebel" <warcrimes[ at ]whitehouse.gov> wrote in message
> > news:OdKlouHiGHA.4044[ at ]TK2MSFTNGP03.phx.gbl...
> >> Using End in a VBA application also clears any global variables. Any
> >> class
> >> objects referenced by those variables are destroyed without notice, and
> >> without the firing the class's Terminate event.
> >>
> >>
> >>
> >
> >

--

Dave Peterson
Re: Beginners question: how to stop / abort execution of vba program
"Bob Phillips" <bob.NGs[ at ]somewhere.com> 06.06.2006 07:59:35
Well I looked an didn't see any saying how Excel crashes. Which is exactly
my point, attributing erroneous 'facts' to support an argument.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Jezebel" <warcrimes[ at ]whitehouse.gov> wrote in message
news:uIsWJTOiGHA.4144[ at ]TK2MSFTNGP02.phx.gbl...
[Quoted Text]
> Bob, really, this has been debated and resolved in times *long* past. Do a
> Google on something like VBA +"End statement" to get chapter and verse on
> it.
>
>
>
> "Bob Phillips" <bob.NGs[ at ]somewhere.com> wrote in message
> news:OrnuYCIiGHA.4304[ at ]TK2MSFTNGP05.phx.gbl...
> >I know, but I would assume that anyone wanting to use End would be
wanting
> > just that effect. As to your previous point, as I said previously, it is
> > bad
> > coding, but not End causing the problem, that problem will occur if the
> > code
> > is not self-tidying, with or without End.
> >
> > Your advice about Google doesn't help me much, what search criteria do I
> > use. End and Excel crash gets millions, but none that I can see about
> > being
> > caused by an End statement (Problem is that End is ubiquitous, End If,
End
> > Sub, etc.)
> >
> > --
> > HTH
> >
> > Bob Phillips
> >
> > (replace somewhere in email address with gmail if mailing direct)
> >
> > "Jezebel" <warcrimes[ at ]whitehouse.gov> wrote in message
> > news:OdKlouHiGHA.4044[ at ]TK2MSFTNGP03.phx.gbl...
> >> Using End in a VBA application also clears any global variables. Any
> >> class
> >> objects referenced by those variables are destroyed without notice, and
> >> without the firing the class's Terminate event.
> >>
> >>
> >>
> >
> >
>
>


Home | Search | Terms | Imprint | Contact
Newsgroups Reader - provided by WiredBox.Net