
標準モジュールにFunctionプロシージャーを作ったのですが、
警告1
関数 'プロシージャー名' には値を返さないコード パスがあります。
実行時に結果が使用されると、null 参照の例外が発生する可能性があります。
という警告が出るのですが、
値を返さないコード パスがどのことを指してるのかわかりません。
Function test()
test = "aaa"
End Function
のように値が返るようにしています。
コードが長すぎてここに記載できないのですが、
値が返るようにしているのに、なぜこのエラーが出てしまうのでしょうか?
No.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になっているかもしれない、そのときには値を返さない、と判断します。
> コードが長すぎてここに記載できないのですが
そういう「長いコード」を整理することも考えましょう。
No.2
- 回答日時:
条件などによって分岐している場合、
それら全てがきちんと値を返しているか
(返すようになっているか)確認されては?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
null 参照の例外が実行時に発生する可能性があります
Visual Basic(VBA)
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
4
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
5
VBのReturnの使い方
Visual Basic(VBA)
-
6
return trueとreturn falseの用途・違いは・・・?
JavaScript
-
7
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
8
”パラメータ値を TextBox から String に変換できません
SQL Server
-
9
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
10
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
11
VB.NETでファイル名順にファイルを読む方法
Visual Basic(VBA)
-
12
visual studio2019でデバッグができません
Visual Basic(VBA)
-
13
Hideについて(.NET)
Visual Basic(VBA)
-
14
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
15
複数のtextboxの処理を一括で行えませんか?
Visual Basic(VBA)
-
16
FriendとPublicの違い。。。
Visual Basic(VBA)
-
17
VB.NETでのnothing の意義について
Visual Basic(VBA)
-
18
コンボボックスの表示は最大何行?
Visual Basic(VBA)
-
19
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
20
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ExcelでGaussian fittingをした...
-
5
マクロ 特定のセル値のみクリ...
-
6
シーケンサで最小値を保持する
-
7
C#の質問です
-
8
VB初心者。小数点以下の表示で...
-
9
C# get set
-
10
代入したのに値が更新されない...
-
11
PL/SQLでのTO_DATEの時間取得に...
-
12
値を返さないコード パス
-
13
ADOでコンボボックスの値集合ソ...
-
14
textboxとLabelを動的に変更する
-
15
ダイアログへ文字列を表示させ...
-
16
VBで電卓のメモリー機能はどの...
-
17
SqlParameterとSqlCommandの使...
-
18
MaskEditBoxへ値の設定を行いたい
-
19
変数に代入してある数値を表示...
-
20
VB2010にて、Log関数の値が違う...
おすすめ情報
公式facebook
公式twitter