| | タイトル | : パスワードBOXのようなもの(textbox) |  | 記事No | : 13545 |  | 投稿日 | : 2009/03/26(Thu) 15:11 |  | 投稿者 | : たたんか | 
 ご相談させて頂きたく投稿しました!まだプログラムを始めて経験が浅いもので、
 関数とか、色々使いまわせない状況です。
 お問い合わせしたい内容は、パスワードBOXのような
 1Byteの英語小文字、英語大文字、数値のみ入力できる
 テキストボックスを作りたく思っています。
 
 下記に記したソースで動作させると、
 一応、思っている動きに近い動作をするのですが、
 11文字以上の入力があった場合に
 KeyboradでBS処理を行うと、正常動作しなくなります。
 例:
 (1234567890abcdef)など入力し、
 動作させると(1234567890abcde1)となる。
 
 こちらの環境は
 WindowsXP SP3 VB6.0となります。
 よろしくお願いします。
 
 
 
 Private Sub Text1_KeyPress(KeyAscii As Integer)
 Dim intA As Integer        '数値計算1
 Dim intB As Integer        '数値計算2
 Dim strSHKtxt As String    'ショートカット
 
 strSHKtxt = Text1.Text
 If (KeyAscii > 0) And (KeyAscii < 7) Then    'いくつかのキー処理
 MsgBox "特殊キーを利用する処理は出来ません。", vbCritical, "警告"
 KeyAscii = 0
 Exit Sub
 End If
 If (KeyAscii = 8) Then                    'BS処理
 intA = Len(strSHKtxt)
 intB = intA - 1
 
 If Not Text1.Text = "" Then
 Text1.Text = Left(strSHKtxt, intB)
 Else
 Exit Sub
 End If
 
 Text1.SelStart = Len(Text1.Text)'ここで、11文字以上の文字を認識
 Text1.SelText = Len(Text1.Text)'ここで、異常動作(入力文字の最後の文字が変更される)
 
 Exit Sub
 End If
 If (KeyAscii >= 9) And (KeyAscii <= 31) Then'いくつかのキー処理
 MsgBox "特殊キーを利用する処理は出来ません。", vbCritical, "警告"
 KeyAscii = 0
 Exit Sub
 End If
 If (KeyAscii = 10) Then'改行
 MsgBox "改行コードは登録出来ません。", vbCritical, "警告"
 KeyAscii = 0
 Exit Sub
 End If
 If (KeyAscii >= 48) And (KeyAscii <= 57) Then '数字
 
 Exit Sub
 End If
 If (KeyAscii >= 65) And (KeyAscii <= 90) Then '大文字A〜Z
 
 Exit Sub
 End If
 If (KeyAscii >= 97) And (KeyAscii <= 122) Then'小文字a〜z
 
 Exit Sub
 End If
 KeyAscii = 0                'それ以外の入力無視
 Exit Sub
 End Sub
 
 |