アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。EXCELVBAの本を見てわからないことがあったので、教えてください。

まず、ソースコードは↓です
Function P_OpenDatabase() As Integer

On Error GoTo Err_Proc
  Cn.ConnectionString=P_CnString()
  Cn.Open

Err_Proc:
  If (Err.Number <> 0) Then
    Call MsgBox(Err.Description)
    Call MsgBox("データベースに接続できません")
  End If
  P_OpenDatabase = Err.Number…★
End Function

で、わからないところは★の部分です

本の解説は↓です。
「プロシージャの戻り値を設定します。Errオブジェクトの「Number」プロパティにはエラーの番号が設定されているので、そのまま戻り値とします。処理が正常に行われたときには、Errオブジェクトの「Number」プロパティは「0(ゼロ)」になるので、戻り値も「0(ゼロ)」になります。」


僕が疑問に思っているのは処理が正常にされたとき(エラーがなかったとき)は、Err_Procの中の処理はされないので、戻り値には0が入らないのでは?と思ってしまうのですが。。

どうなんですかね?わかる方は教えてください。よろしくお願いします。

A 回答 (1件)

Cn.Open


が成功した時点で、Err.Numberは0になっていると思います。
Err_proc:
は単なるラベルなので、エラーが起きても起きなくても実行されます。
IF~End Ifの部分は、0で無い時だけ実行されるので、問題ないです。

この回答への補足

長々と長文を読んでいただいて、ありがとうございました。

補足日時:2005/01/22 12:34
    • good
    • 0
この回答へのお礼

あ、どうも。早速ご返事いただいてありがとうございます。

大変わかりやすく、疑問点が全部とけました。Err_Proc:は、エラーが起きても起きなくても実行されるんですか。。それは、全然知りませんでした。大変勉強になりました。これを知らないでプログラムを組んでいたら、この先、えらいことになっていました(;^^

本当にどうもありがとうございました。ずっと一人で悩んでいました。ようやく、疑問がとけて、すごくほっとしました。ありがとうございました。

お礼日時:2005/01/22 12:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!