教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでフォーム内に数字だけが入力可能なテキストボックスを作成する方法

構文

構文は以下の通りです。

Private Sub テキストボックス名_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
        KeyAscii = 0
    End If
End Sub

解説

テキストボックス名_KeyPressは、テキストボックスのKeyPressイベントで、ユーザーがキーを押したときに実行されるコードを記述します。KeyAsciiは、押されたキーのASCIIコードを表します。数字の0〜9はASCIIコードで48〜57に対応しています。条件式は、If Not (KeyAscii >= 48 And KeyAscii <= 57)で、押されたキーが数字以外であれば、KeyAscii = 0にして、そのキー入力を無効化します。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub 数字入力テキストボックス_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
        KeyAscii = 0
    End If
End Sub

上記のプログラムでは、ユーザーが「数字入力テキストボックス」という名前のテキストボックスに入力する際に、数字以外のキーが押された場合、その入力を無効にします。例えば、アルファベットや記号が押された場合、それらは入力されず、無視されます。これにより、テキストボックスには数字だけが入力できるようになります。

まとめ

KeyPressイベントを使用して、テキストボックスに入力できる文字を制限できます。KeyAsciiを使って、数字のASCIIコードに該当するキーだけを許可し、それ以外は無効化します。この方法を使うと、特定の条件(この場合は数字のみ)に従った入力制限を簡単に実装できます。