- ベストアンサー
戻り値について
学校の課題で分からないところがあります。 教えていただけないでしょうか? VB.Net2002です。 Private Function CheckNumber(ByVal NumTextBox As TextBox) As Boolean If IsNumeric(NumTextBox.Text) Then Return True Else MessageBox.Show("数値を正しく入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) NumTextBox.SelectAll() NumTextBox.Focus() End If End Function Private Sub ExecButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExecButton.Click If Not CheckNumber(Num1TextBox) Then Exit Sub End If --------------質問----------------------------- ExecButton_Clickプロシージャの If Not CheckNumber(Num1TextBox, Num1) Then の処理内容が分かりません。 CheckNumberでReturn Trueが返ってくるか エラーのメッセージボックスが 表示されるのは分かりますが、 Notで否定してもFalseが返ってくる事はないのでは? ならこの処理は何なのですか? ----------------------------------------------- 長くなってしまいすみません(>_<)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
変数でも関数でもBooleanは宣言した段階では「False」ですので If IsNumeric(NumTextBox.Text) Then のところで結果が真であれば「True」偽であれば「False」を返却します。 試しに下記のコードをフォームに貼り付けて実行してみてください。 ------------------------------------------------------------------ Private Sub Form_Load() Dim a As Boolean MsgBox a MsgBox fa(0) MsgBox fa(1) MsgBox fa(0) End Sub Function fa(b) As Boolean If b = 1 Then fa = True End If End Function
その他の回答 (1)
- momoturbo
- ベストアンサー率55% (49/88)
ちょっと、勘違いされているようなので。 VBの場合 True=-1=&hFFFF(hex)=1111111111111111(2進) (0ではないもの) False=0 となっています。 Cのように初期値を入れなくても、0が代入されます。 だから、何もしなければFalseが返るるのです。 Notの意味ですが、ビットを反転させるって意味です。 例 not 1 -> 0 not 0 -> 1 not true -> false not false -> true If Not CheckNumber(Num1TextBox) Then 'FALSEが返ったときの処理 Else ’Trueが返ったときの処理 End if VB6の場合で説明しています。
お礼
そうなんですか。 どうもありがとうございました。"^_^"
お礼
アドバイスありがとうございました。"^_^"
補足
返事遅くなってすみません。 貼り付けて実行させていたできました。 MsgBox fa(0) の部分なんですが、プロシージャ名に代入したわけでもないし、Returnで返してもいないのにFalseが表示されるのはなぜなんですか? プロシージャはひょっとしてEnd Functionに出会った時点で戻り値の既定値Falseを返すんですか? あと、それならFalseが返ってきたら If Not CheckNumber(Num1TextBox) Then Exit Sub End If の所でFalseじゃなければ処理を抜ける。 TrueならTrueじゃなければ処理を抜ける。 となってしまい、矛盾が生じてしまうのでは? 質問ばかりですね・・・。でも気になるんです!