標準モジュールに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で質問しましょう!
似たような質問が見つかりました
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
null 参照の例外が実行時に発生する可能性があります
Visual Basic(VBA)
-
-
4
VBのReturnの使い方
Visual Basic(VBA)
-
5
return trueとreturn falseの用途・違いは・・・?
JavaScript
-
6
CloseとDisposeの違い
Visual Basic(VBA)
-
7
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
8
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
9
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
10
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
11
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
12
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
13
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
14
”パラメータ値を TextBox から String に変換できません
SQL Server
-
15
asp.NET初心者です。「 ’Context’は’○○○’のメンバで
Microsoft ASP
-
16
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
17
SQLのエラー(~付近に不適切な構文があります)
SQL Server
-
18
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
19
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
20
Hideについて(.NET)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
Excel VBAのリストボックスの値...
-
マクロ 特定のセル値のみクリ...
-
ハッシュテーブル(連想配列)が...
-
fscanfでC言語の空欄を読んだ場...
-
スクロールバーの境界値は?
-
【C++/CLI.NET】コンボボックス...
-
RegisterClassExのエラー原因
-
textboxとLabelを動的に変更する
-
vbaの繰り返しで求める最大値に...
-
テキストボックスの設定。
-
【ASP.NET】 DataTextFieldの値...
-
テキストボックスの値をコンボ...
-
変数名の取得
-
VB2008 iniファイルの指定セク...
-
コンボボックスを読み取り専用...
-
ComboBoxで選択した値をReplace...
-
setcookieで「path」に複数の値...
-
コンボボックスの幅の変更について
-
ユーザーフォームのテキストボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
ハッシュテーブル(連想配列)が...
-
textboxとLabelを動的に変更する
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETでアクティブなformを知...
-
Excel vba ユーザーフォームテ...
-
DataTableに対するLINQについて
-
マクロで奇数と偶数の値を2か所...
-
[VBA]選択範囲の下から上に処理...
-
【C++/CLI.NET】コンボボックス...
-
変数に代入してある数値を表示...
-
vbscriptを使いexcelを参照して...
-
範囲が指定されている乱数について
-
[VB.net] DataGridViewのコンボ...
おすすめ情報