テキストボックスに数値以外入力できないようにする方法

◆概要


このページは、Visual Basic 6.0でテキストボックスに数値以外入力できないようにする方法について記載しています。


テキストボックスに数値以外を入力できないようにしたいときは、文字コードを調べます。
数字の文字コード(アスキーコード)は48から57が数字ですから、これ以外の文字コードは受け付けないようにします。

◆Sample 1


Option Explicit

Dim MyStr As String

Private Sub Form_Load()
    'テキストボックスを初期化
    Text1.Text = ""
End Sub

Private Sub Text1_Change()
    Dim buf As String
    Dim i As Integer
    Dim cbuf As Integer

    buf = Text1.Text

    For i = 1 To Len(buf)
        cbuf = Asc(Mid(buf, i, 1))
        '48は数字0、57は数字9のアスキーコードです。
        If cbuf < 48 Or cbuf > 57 Then
            Text1.Text = MyStr
            Exit For
        End If
    Next i
    
    MyStr = Text1.Text
End Sub
  

◆Sample 2


数字のみを受け取るようにするため、キーが押された時に発生する KeyPress イベントで、押されたキーに対応する文字が数値か否かを判断し、数値であればテキストボックスへの出力を許可します。


「If Not Chr(KeyAscii) Like "[0-9]" Then」で押されたキーを判別し、数値 (0 〜 9) 以外の場合、「KeyAscii = 0」でテキストへ出力しないようにします。このコードを実装すると、テキストボックスでは数値のみが入力可能となり、数値以外の文字や記号は入力できなくなります。

Private Sub Text1_KeyPress(KeyAscii As Integer)
    'バックスペースは除外
    If KeyAscii = vbKeyBack Then Exit Sub
    
    If Not Chr(KeyAscii) Like "[0-9]" Then
        KeyAscii = 0    '入力を無効にする
    End If

End Sub
  


▼ページトップへ