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
|