フォーム内に設置したテキストボックスに、文字/数字/それ以外のどれが入力されたのか 米国規格協会が定めた「文字コードのセット」 どう定義するのが正解なのかは不明だが「ユーザーが入力可能な文字を生成するキー」を指す模様 テキストボックスに、文字を入力したのか数字を入力したのか記号を入力したのか判定するにはどうするとよいのか キーボードのANSIキー(入力可能な文字を生成するキー)が押されたときに発生するイベント 文字には文字コード(番号)が振られており、ASC関数を使用することで文字コードを調べることができる 文字ごとのコードはASC関数や上述のリファレンスページで確認することもできるが、いちいち調べて適用する必要はない ▼処理結果_数字キーを押下した場合▼ ▼処理結果_数字キー以外を押下した場合▼ ※ひらがな・カタカナ・漢字についても試したいが時間ないので先に進む
押下したキーボードのキーによって判定し処理を分ける
文字コードとキーボードのキーについて
ANSI文字コードとは
つまりANSIという言葉は文字セットを指しており文字コード自体の名称ではないようだ
▼言葉の解説ページ▼
ANSI
文字コードの種類|エンジニアが知っておきたい”文字コード”ANSIキーとは
▼HTML ASCII リファレンス▼
https://memopad.bitter.jp/w3c/charsets/ref_html_ascii.html
※ANSIとASCIIの違いはネットで調べたらいろいろ載っているが
後述のKeyPressイベントでは「KeyAscii As Integer」とあるのでAsciiのリファレンスを載せた
叩いたキーのタイプを判別
イベント【KeyPress】
このイベントを活用し、押されたキーの種類ごとに処理を分岐することが可能
※イベントの発生順 KeyDown→KeyPress→Change→KeyUp
▼参考記事▼
KeyPress イベント | Microsoft Learn関数【ASC】
▼記述例▼Sub test_codeNum()
Debug.Print Asc("0")
Debug.Print Asc("a")
Debug.Print Asc("あ")
Debug.Print Asc("髪")
Debug.Print Asc("神")
End Sub
▼処理結果▼
叩いたキーによって処理を分岐
▼記述例_フォームのモジュール内【KeyPress】イベントに記述▼Private Sub txt1_KeyPress(KeyAscii As Integer)
If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then
Me.lbl1.Caption = "数字キー"
Else
Me.lbl1.Caption = "数字キー以外が押下されました"
End If
End Sub
上記の記述例をヒントにいろいろと試すと楽しいかも
▼文字の種類を判別する記述例▼KeyAscii >= Asc("0") And KeyAscii <= Asc("9") '数字
KeyAscii >= Asc("a") And KeyAscii <= Asc("z") '英字
KeyAscii = 8 'BackSpace
KeyAscii = 9 'Tab
KeyAscii = 13 'Enter
KeyAscii = 27 'Esc
KeyAscii = 0 '文字入力をキャンセル