プロが教える店舗&オフィスのセキュリティ対策術

学校の課題で分からないところがあります。
教えていただけないでしょうか?
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が返ってくる事はないのでは?
ならこの処理は何なのですか?
-----------------------------------------------
長くなってしまいすみません(>_<)

A 回答 (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

この回答への補足

返事遅くなってすみません。
貼り付けて実行させていたできました。

MsgBox fa(0)

の部分なんですが、プロシージャ名に代入したわけでもないし、Returnで返してもいないのにFalseが表示されるのはなぜなんですか?

プロシージャはひょっとしてEnd Functionに出会った時点で戻り値の既定値Falseを返すんですか?


あと、それならFalseが返ってきたら

If Not CheckNumber(Num1TextBox) Then
Exit Sub
End If

の所でFalseじゃなければ処理を抜ける。
TrueならTrueじゃなければ処理を抜ける。
となってしまい、矛盾が生じてしまうのでは?


質問ばかりですね・・・。でも気になるんです!

補足日時:2004/02/20 16:23
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。"^_^"

お礼日時:2004/02/20 19:54

ちょっと、勘違いされているようなので。



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の場合で説明しています。
    • good
    • 0
この回答へのお礼

そうなんですか。
どうもありがとうございました。"^_^"

お礼日時:2004/02/20 19:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!