VBAのテキストボックスに特定の文字だけを入力できるようにする方法

VBAのテキストボックスに特定の文字だけを入力できるようにする方法

Posted at August 12,2014 2:34 AM
Tag:[Excel, VBA]

VBAのテキストボックスに特定の文字だけを入力できるようにする方法を紹介します。

1.問題点

Excelシートにテキストボックスを表示させるには、「開発」タブをクリックして「挿入」→「テキストボックス」を選択します。

「開発」タブ

これでテキストボックスが表示されました。

テキストボックス

このテキストボックスには任意の文字が入力できます。

テキストボックス

このテキストボックスに特定の文字だけを入力できるようにしたい、たとえば数字だけを入力できるようにしたいのですが、その方法がわかりません。

2.特定の文字だけを入力できるようにする

特定の文字だけを入力できるようにするには、Alt+F11でVBEを開き、左のツリーからテキストボックスを表示させているシート名をダブルクリック。

VBE

右ペインの「(General)」というプルダウンから「TextBox1」を選択(複数のテキストボックスを作っている場合、「TextBox1」の数字の部分は変わります)。このあと「Private Sub TextBox1_Change()~End Sub」というコードが表示されますが無視してください。

General

カーソルをさきほど表示されたコードの直前か直後に移動したあと、右側のプルダウンから「KeyPress」を選択。

KeyPress

これで次のコードが表示されます。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
End Sub

数字だけを入力できるようにするには、上記のコードに赤色部分を追加します。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii < 48 Or KeyAscii > 57 Then
        KeyAscii = 0
    End If
End Sub

これでテキストボックスに数字以外の文字が入力できなくなります。

テキストボックス

3.解説

TextBox1_KeyPress()という関数(イベントプロシージャ)はキーが押されたときに起動する関数です。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

この関数の引数KeyAsciiは、押されたキーのアスキーコードになります。

この引数を判定し、数字以外の文字、つまりアスキーコードが48~57の範囲であれば変数KeyAsciiに0を設定することで、キー入力を無効にすることができます。

4.ASCIIコード一覧

ASCIIコードを調べるには、Googleで「ASCIIコード」で調べればよいでしょう。

とりあえず以下のページを紹介しておきます。

ASCII文字コード

ASCIIコードの見方がよくわからない場合、さきほどのコードを次のように修正して、入力文字のASCIIコードを調べてもよいでしょう。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    MsgBox KeyAscii
End Sub
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)