Enterキーで次のフォーカスに移動するにはどうしたら良いですか?
あと、簡単に数字以外の入力はメッセージボックスでエラー表示させるには
どうしたら良いですか?
KeyDownのイベントでKeycodeを判定する
If KeyCode = vbKeyReturn Then ’Enterなら?
Object.SetFocus '遷移先のコントロールが特定できるなら
Call SendKeys("{TAB}", True) 'Tanキーを送信しちゃう
※SendKeyを使用すると、遷移先のコントロールが特定されていなくても
NextTabIndexの部品には行きますが・・キーボード障害あります。
End if
Isnumeric関数を使用すれば文字列の数値判定が可能です。
但し、\や-などの文字も含まれたと思います。
一文字づつ切り出してascで取得した文字コードが48〜57である事
でもよいかと思います。
KeyDownのイベントではなく、KeyPressイベントではどうするのですか?
KeyDownのイベントはできました。
Isnumeric関数とはどのように使用するのですか?
上記のようにサンプル書いていただけると嬉しいです。
(ascでもかまいません)
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等を使用して確認してください。
IsNumericの方でText1.Text = ""をEnd Ifの後に付けると2回メッセージボックスが出ますね! 何でですか?
すいません。 できました!
数値入力は、IsNumeric関数でやりました。
単なるプログラムミスでしたー。
ツイート | ![]() |