構文
数字だけが入力可能なテキストボックスを作成するには、UserFormを使用します。UserFormは、VBAで簡単にGUI(グラフィカル・ユーザー・インターフェース)を作成するためのオブジェクトです。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
解説
上記のコードは、テキストボックスにキーが押された際に発生するKeyPressイベントに対する処理です。この中で、IsNumeric関数を使って入力が数字かどうかを判定し、数字でない場合かつBackspaceキー(キーコード8)でない場合には、キー入力を無効にします。
使い方
具体的な使い方を紹介します。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' 数字以外の入力を無効化
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
' 偶数以外の数字を無効化
If IsNumeric(Chr(KeyAscii)) Then
If CInt(Chr(KeyAscii)) Mod 2 <> 0 Then
KeyAscii = 0
End If
End If
End Sub
' 数字以外の入力を無効化
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
' 偶数以外の数字を無効化
If IsNumeric(Chr(KeyAscii)) Then
If CInt(Chr(KeyAscii)) Mod 2 <> 0 Then
KeyAscii = 0
End If
End If
End Sub
このプログラムは、偶数のみを入力許可する内容となります。TextBox1 に対する KeyPress イベントを使用し、入力されたキーが数字でない場合や、入力された数字が偶数でない場合には、その入力を無効化しています。これにより、ユーザーが奇数を入力しようとした場合、その入力は無視され、テキストボックスには偶数のみが入力されるようになります。このように、KeyPress イベントを活用することで、ユーザーが入力するデータに対して柔軟かつ細かい制御が可能です。
プログラミング例
以下に、プログラミング例を紹介します。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' 数字以外の入力を無効化
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub CommandButton1_Click()
Dim height As Double
' テキストボックスから身長を取得
height = CDbl(TextBox1.Value)
' 身長に関する処理を実行
If height < 100 Then
MsgBox "身長が短すぎます。"
ElseIf height > 200 Then
MsgBox "身長が高すぎます。"
Else
MsgBox "入力された身長は正常です。"
End If
End Sub
' 数字以外の入力を無効化
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub CommandButton1_Click()
Dim height As Double
' テキストボックスから身長を取得
height = CDbl(TextBox1.Value)
' 身長に関する処理を実行
If height < 100 Then
MsgBox "身長が短すぎます。"
ElseIf height > 200 Then
MsgBox "身長が高すぎます。"
Else
MsgBox "入力された身長は正常です。"
End If
End Sub
このサンプルでは、入力制限を利用して身長の入力をさせます。TextBox1に対するKeyPressイベントを利用して、数字以外の入力を無効化しています。その後、身長の入力があった場合、正常な範囲かどうかを判定してメッセージボックスで表示します。
まとめ
数字だけが入力可能なテキストボックスを作成することは、簡単かつ効果的です。この手法を学び、是非活用してください。