Enterキーで移動するには?

解決


ドラッキー  2002-03-12 05:58:07  No: 104075

Enterキーで次のフォーカスに移動するにはどうしたら良いですか?
あと、簡単に数字以外の入力はメッセージボックスでエラー表示させるには
どうしたら良いですか?


マザー  2002-03-12 19:06:02  No: 104076

KeyDownのイベントでKeycodeを判定する
If KeyCode = vbKeyReturn Then    ’Enterなら?
  Object.SetFocus  '遷移先のコントロールが特定できるなら
  Call SendKeys("{TAB}", True)   'Tanキーを送信しちゃう
  ※SendKeyを使用すると、遷移先のコントロールが特定されていなくても
    NextTabIndexの部品には行きますが・・キーボード障害あります。
End if

Isnumeric関数を使用すれば文字列の数値判定が可能です。
但し、\や-などの文字も含まれたと思います。
一文字づつ切り出してascで取得した文字コードが48〜57である事
でもよいかと思います。


ドラッキー  2002-03-13 00:47:25  No: 104077

KeyDownのイベントではなく、KeyPressイベントではどうするのですか?
KeyDownのイベントはできました。
Isnumeric関数とはどのように使用するのですか?
上記のようにサンプル書いていただけると嬉しいです。
(ascでもかまいません)


マザー  2002-03-13 03:00:10  No: 104078

KeyPressのイベントにて判定する事はお勧めできません。
VbのVer5.0 以降ではテキスト等の入力部品でMaxLenthgで指定されている
入力可能桁数が既にフル入力されている時イベントを拾えないからです。
KeyPress イベントにどうしてもしたいというのなら
フル桁入力時に遷移しないと言う制限が起きますが以下の様です。
If KeyAscii = 13 Then    '定数が思い出せないので直ですが13:EnterのAsciiです。
    フォーカス移動上記同様
End If
 
↓数値の判定IsNumeric
Text1が数値を入力するコントロールとした場合

If IsNumeric(Text1.Text) <> True Then  '引数に判定する入力テキスト等
     Call MsgBox("数値を入力してください。", _
           vbExclamation, "入力エラー") '数値では無い。
End If
↓Asc
Dim nCnt    As Integer                 '切出し文字のポインタ
Dim sWork   As String                  '切出し文字(1バイトずつ判定)
For nCnt = 1 To Len(Text1.Text)        '文字列長Loop
    sWork = Mid(Text1.Text, nCnt, 1)   'n番目の文字切出し
    If (Asc(sWork) >= 48 And _
        Asc(sWork) <= 57) = False Then '半角"1"〜"9"の文字か?
        MsgBox "Err"
    End If
Next
動くかどうかは解りません・・・・
Help等を使用して確認してください。


ドラッキー  2002-03-15 03:15:02  No: 104079

IsNumericの方でText1.Text = ""をEnd Ifの後に付けると2回メッセージボックスが出ますね!  何でですか?


ドラッキー  2002-03-16 02:33:55  No: 104080

すいません。  できました!
数値入力は、IsNumeric関数でやりました。
単なるプログラムミスでしたー。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加