- ベストアンサー
値を返さないコード パス
標準モジュールにFunctionプロシージャーを作ったのですが、 警告 1 関数 'プロシージャー名' には値を返さないコード パスがあります。 実行時に結果が使用されると、null 参照の例外が発生する可能性があります。 という警告が出るのですが、 値を返さないコード パスがどのことを指してるのかわかりません。 Function test() test = "aaa" End Function のように値が返るようにしています。 コードが長すぎてここに記載できないのですが、 値が返るようにしているのに、なぜこのエラーが出てしまうのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
警告を表示させないようにするだけなら簡単ですが、それでは根本的な解決にはならないので、「値を返さないコードパス」を探してみましょう。 ありがちなのとして ○ エラー処理などで Exit Functionを使っている 例) ' エラーになったっときには関数を終了させる If エラー発生 Then Exit Function End if ○ Then側だけで、Else側だけ、特定のCaseだけで、戻り値が設定されている 例) ' A<>0のときは戻り値が無い If A = 0 Then test="aaa" End If ' Aが1でも2でも無いときに、戻り値が無い Select Case A Case 1 test="aaa" Case 2 test="bbb" End Select 注意しなければいけないのは、コンピュータは「絶対有り得ない」かどうかを判断できない、ということです。 例えば、上記Select Caseで、Aは絶対に1か2になるようにプログラムを作ってあったとします。 それを知っている人間は、このSelect Caseで「値を返さないコードパス」は存在しない、と判断できます。 しかし、コンピュータには、それを知る手段がありません。A=0になっているかもしれない、そのときには値を返さない、と判断します。 > コードが長すぎてここに記載できないのですが そういう「長いコード」を整理することも考えましょう。
お礼
ご回答ありがとうございました。