こんにちは。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が入らないのでは?と思ってしまうのですが。。
どうなんですかね?わかる方は教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Cn.Open
が成功した時点で、Err.Numberは0になっていると思います。
Err_proc:
は単なるラベルなので、エラーが起きても起きなくても実行されます。
IF~End Ifの部分は、0で無い時だけ実行されるので、問題ないです。
あ、どうも。早速ご返事いただいてありがとうございます。
大変わかりやすく、疑問点が全部とけました。Err_Proc:は、エラーが起きても起きなくても実行されるんですか。。それは、全然知りませんでした。大変勉強になりました。これを知らないでプログラムを組んでいたら、この先、えらいことになっていました(;^^
本当にどうもありがとうございました。ずっと一人で悩んでいました。ようやく、疑問がとけて、すごくほっとしました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
「実行時エラー3001」のポップ...
-
VBAがブレークモードになっ...
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
「コンパイルエラー:プロシー...
-
テキストボックスに記述した数...
-
【エクセル】ハイパーリンク先...
-
ExcelVBA Range クラスの Page...
-
ACCESSのエラーで困っています
-
VBAのエラー発生場所をメッセー...
-
Invalid procedure call or arg...
-
Excelで下記のようにマクロを作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
VBAのコードがエラーになっ...
-
実行時エラー -'-2147417848
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
おすすめ情報