View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default My errorical understanding of Error handling

VBA executes sequetially. when you use goto you move sequential processing
to a new line. It then continues to execute sequentially until it
terminates or is directed to a different location. So, after the goto, it
displays the message and executes End Sub.

Documented pretty well in VBA help. Put Resume in a module, highlight it
and hit F1.

I get 2 choice:

On Error Statement

Resume Statement



Review both.



That said, FIND does NOT raise an error. Appending an activate or trying to
use a property of the range found raises an error when Find was not
successful. This is a design issue easily avoided.



set rng = Cells.Find("SomeString")

if not rng is nothing then

'process the found cell

rng.Select ' if you must

End if

rather than

Cells.Find("SomeString").Activate



which raises an error when FIND returns NOTHING

Also, best to specify the argument list to find as many of the settings are
persistent and can cause unpredictable behavior if you don't include them
specificially. (for example lookin:=xlformulas ,lookat:=xlWhole)



expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection,
MatchCase)

--

Regards,

Tom Ogilvy



"Hari Prasadh" wrote in message
...
Hi,

I have probably asked this before, but havent been able to understand
properly.

Please explain how to write code which explains error handling. I have

seen

a) on Error goto 0

What does 0 mean. Is it an ID?

b) And sometimes

on error goto Abortret
-
-
-
-

and near the end of the sub we have

Abortnet:
msgbox MsgBox Err.Description
end sub

Suppose in b) we encounter an error, then after displaying the msgbox and
the user pressing ok,does the sub stop executing (or rather finishes
executing as the statement after Msgbox is End Sub) My doubt is does the
control in error handling move to end sub as the line after msgbox is end
sub?

Please give me some explanations/links about error handling as I need to

use
it for some unpredicted circumstance like finding for a particular string

in
a cell and what if it is not found (I would like to continue with running

of
the sub just after find statement).

Please guide me.

Thanks a lot,
Hari
India