うまく実現できません(>_<)


かなた  2003-10-18 15:30:33  No: 79865  IP: [192.*.*.*]

いま、テキストボックス1に入力された値が
    ①1〜8の場合にEnterキーを押したらテキストボックス2に移動
    ②9以上または0の場合にEnterキーを押したらメッセージを表示、テキストボックス1はクリア
    ③未入力の場合にEnterキーを押したら3を表示して、テキストボックス2へ移動
というようにしたいのですが、なぜかできません。
どなたかアドバイスをください(>_<)
問題のソースが以下のものです。よろしくお願いします。


    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

        If e.KeyCode = Keys.Enter Then

            If TextBox1.Text = "1" Or "2" Or "3" Or "4" Or "5" Or "6" Or "7" Or "8" Then

                TextBox2.Focus()
                Exit Sub

            ElseIf TextBox1.Text = "9" Then

                MsgBox("議案数は8議案以内です。", MsgBoxStyle.Exclamation)
                TextBox1.Clear()
                TextBox1.Focus()
                Exit Sub

            ElseIf TextBox1.Text = "0" Then

                MsgBox("議案数を入力してください。", MsgBoxStyle.Exclamation)
                TextBox1.Clear()
                TextBox1.Focus()
                Exit Sub

            ElseIf Val(TextBox1.Text) = "" Then

                TextBox1.Text = "3"
                TextBox2.Focus()
                Exit Sub
                End If

            End If

    End Sub

編集 削除
Say  2003-10-18 19:13:39  No: 79866  IP: [192.*.*.*]

タイトルは内容を表すようにつけてください。
また、機種依存文字(丸付き数字)は使用しないでください。
他の利用者が迷惑します。

質問についてですが、記述したいのは
Enterキーを押したときの処理ではありませんか?

ならば、KeyPressイベントでKeyAscii=vbKeyReturnのときに
Select Case でText1.Textの中身に対する処理を
記述すればいいのでは?

編集 削除
ねろ  2003-10-18 19:32:17  No: 79867  IP: [192.*.*.*]

>If TextBox1.Text = "1" Or "2" Or "3" Or "4" Or "5" Or "6" Or "7" Or "8" Then

If TextBox1.text = "1" Or TextBox1.text = "2" Or ...............
とするか
If TextBox1.Text > "0" And TextBox1.Text < "9" Then
とします

編集 削除
oku  URL  2003-10-18 21:41:13  No: 79868  IP: [192.*.*.*]

おおー  ElseIfだ。初めて見た。
Sayさんのご指摘通り  Select Caseを使いましょう。ElseIfは使わないように。

で、下の要件を満たしてないですよ。
>2.9以上または0の場合に
>ElseIf TextBox1.Text = "9" Then
これだと9以上では無いですよね。

編集 削除
ねろ  2003-10-18 22:36:50  No: 79869  IP: [192.*.*.*]

訂正
>If TextBox1.Text > "0" And TextBox1.Text < "9" Then
を 
If Val(TextBox1.Text) > 0 And Val(TextBox1.Text) < 9


> ElseIf TextBox1.Text = "9" Then

ElseIf Val(TextBox1.Text) >= 9 Then


>ElseIf Val(TextBox1.Text) = "" Then

ElseIf TextBox1.Text = "" Then   

これで仕様どおり動くはずかと.......

編集 削除
VB初心者  2003-10-20 09:40:58  No: 79870  IP: [192.*.*.*]

便乗質問させてください。
ElseIfは使わずにSelect Caseを使うようにとのことですが、
これはどのような理由からなのでしょうか。

同じ変数やプロパティ等を評価するからSelect Case の方が可読性が増すということでしょうか。
それとも、処理速度等の影響から、複数の変数等を評価する場合でも
Select Case True
    Case a = 0
    Case b = 0
End Select
等とした方が良いのでしょうか。

編集 削除