テキストボックスの内容を固定長6桁の英数字のみ入力可能と
したいのですが、どのようにしたらよいのでしょうか?
テキストボックスのプロパティのMaxLengthは6に設定しております。
よろしくお願いいたしますm(__)m
VB6ならこんな感じで・・・
Private Sub Form_Load()
Text1.MaxLength = 6
Text1.IMEMode = 7
End Sub
さくらさんありがとうございます。
ですがこの方法ですとコピペで別のもの(全角カナ等)が入力可能と
なってしまいます。
ほかに良い方法があるか考えてみます。
コピペのことを考えるとテキストボックスをフックしたりしなきゃいけないと思います。
お手軽にやるならChangeイベントでチェックしたほうがイイです。
Private Sub Text1_Change()
Dim sBuff As String
Dim lLp&, lPos As Long
Static bChk As Boolean
If bChk Then Exit Sub
bChk = True
With Text1
sBuff = .Text
lPos = .SelStart
lLp = 1
Do Until (lLp > Len(sBuff))
If Not (Mid$(sBuff, lLp, 1) Like "[0-9a-zA-Z]") Then
'半角英数字以外は消す。
sBuff = Left$(sBuff, lLp - 1) & Mid$(sBuff, lLp + 1)
lPos = lPos - 1
Else
lLp = lLp + 1
End If
Loop
.Text = sBuff
.SelStart = lPos
End With
bChk = False
End Sub
適当に作ってみましたが、こんな感じでいかがでしょう?
入力チェックなら、validateイベントを使うのも良いと思います。
編集 削除