固定長の英数字にするには?


ますたー  2004-02-12 07:10:03  No: 111781  IP: [192.*.*.*]

テキストボックスの内容を固定長6桁の英数字のみ入力可能と
したいのですが、どのようにしたらよいのでしょうか?

テキストボックスのプロパティのMaxLengthは6に設定しております。

よろしくお願いいたしますm(__)m

編集    削除
さくら  2004-02-12 18:31:29  No: 111782  IP: [192.*.*.*]

VB6ならこんな感じで・・・

Private Sub Form_Load()
  Text1.MaxLength = 6
  Text1.IMEMode = 7
End Sub

編集    削除
ますたー  2004-02-12 20:05:08  No: 111783  IP: [192.*.*.*]

さくらさんありがとうございます。

ですがこの方法ですとコピペで別のもの(全角カナ等)が入力可能と
なってしまいます。

ほかに良い方法があるか考えてみます。

編集    削除
nanashi  2004-02-12 20:29:51  No: 111784  IP: [192.*.*.*]

コピペのことを考えるとテキストボックスをフックしたりしなきゃいけないと思います。
お手軽にやるなら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

適当に作ってみましたが、こんな感じでいかがでしょう?

編集    削除
いな  2004-02-12 20:50:03  No: 111785  IP: [192.*.*.*]

入力チェックなら、validateイベントを使うのも良いと思います。

編集    削除