• ベストアンサー

ExcelVBAでテキストボックスに入力制限をする方法

fumufumu_2006の回答

回答No.1

簡単に済ますなら、 Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End Sub とかにすれば、数字だけ入力チェックできます。 必要に応じて、"0123456789"を変えるか、変数にして変えるとかで許す文字を指定できます、が・・・ IMEがオンの時に対応できないみたいです。 で、 Private Sub TextBox1_Change() Dim i As Integer Dim s As String For i = 1 To Len(TextBox1.Text) If InStr("0123456789", Mid(TextBox1.Text, i, 1)) > 0 Then s = s & Mid(TextBox1.Text, i, 1) End If Next TextBox1.Text = s End Sub と、変更があった時に全部チェックすれば、多分OKだと思います。 "0123456789"を変えれば、許可する文字が変わります。 もっとスマートな方法もあるかも知れません。

miya_HN
質問者

お礼

今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。

miya_HN
質問者

補足

回答ありがとうございます。 なるほど。このようにして、数字のみを入力できるようにできるんですね。 ところで、Chr(KeyAscii)はキーが押されたときに返す番号のことでしょうか? よろしくお願いします。

関連するQ&A

  • ExcelVBAのテキストボックスのデータ型

    Excelのプログラムで、テキストボックスなどのオブジェクトで入力するときに数値だけとか、文字だけとかにしたいのですがデータ型を扱うプロパティはないでしょうか? 回答よろしくお願いします。

  • テキストボックスの文字数制限について

    エクセル2000でVBAを勉強中の初心者です。 ユーザーフォームのテキストボックスに入力できる文字数の制限や、ボックス内での文字の折り返し表示はできるのでしょうか。どなたかご指導いただけないでしょうか。

  • テキストボックスの入力制限

    VB2005環境です。 ・全角文字のみ入力を受け付けるテキストボックス ・半角文字のみ入力を受け付けるテキストボックス 以上のような入力制限を持つコントロールを用意したいと思っています。 MaskedTextBoxを用いればできるかと思いましたが、それらしき プロパティが見当たりませんでした。 やはりキーイベントを取得して…ということになるのでしょうか?

  • テキストボックスの数値入力制限

    テキストボックスによる数値入力の制限で困っています。 LEDの点灯とモーターの動作のチェックプログラムを作り 完成したのですが、いろいろとネットで調べ 下記のプログラムでテキストボックスの数値入力を作成したのですが、 作成プログラム Dim bKeyNum As Boolean = Char.IsDigit(e.KeyChar) If bKeyNum <> True Then e.Handled = True End If この方法ではBack Spaceキーが効かないため上司から使いづらいので キーが効くようにしてほしいと要望があり、 もう一度探しましたが、どれも記述どおりにやっても うまく動きません。 何か私に分かりやすく説明をしてくれて簡単に数値入力と Back Spaceキーが使えるプログラムを教えてください。 よろしくお願いします。

  • VB2005テキストボックスへのコピペ制御についての質問です。

    VB2005テキストボックスへのコピペ制御についての質問です。 フォーム上にテキストボックスを用意し、数値しか入力させず、整数が入力される予定です。 数値のみを入力させることは出来たのですが、コピペを行うと数値でも文字でも貼りつけ出来てしまいます。 これを制限する方法はあるのでしょうか?

  • ExcelVBA テキストボックスについて

    フォーム上100個のテキストボックスがあります このテキストボックスに入力制限を加えたいのですが、どのように書けばよろしいでしょうか?  ・半角数字だけしか入力できない(計算に使う)  ・入力すると、1,234,567のような表示になり、右詰め  ・10桁までしか入力できない  ・予定の計算結果だと、10億を超えない  ・計算結果は数字が入力されるたびLabel1に表示される 私の作ったマクロだと、全てのテキストボックスに同じようなマクロを登録する結果になってしまい、これってもっと短くかけるのでは?と思い、質問いたしました よろしくおねがいします

  • テキストBOXの入力制限について

    テキストBOXを下記のように設定したとします。 <input type="text"name="***" maxlength="30"> この場合は、全角・半角関係なく文字数を30文字入力することができますよね? 今回、私がやりたいことは、バイト数の制限をやりたいんです。 例えばバイト数を30バイトにした場合は、 全角では15文字しか入力できなくて 半角では30文字入力制限をする方法を探しています。 何かよい方法はないものでしょうか???

  • テキストボックスへにセル値の入力

    エクセルマクロの初心者で恐縮なのですが、ユーザーフォームのテキストボックスに下記のようなことは可能でしょうか? 例1)ユーザーフォーム上にある「テキストボックス」に「オプションボタン1」を選択するとワークシートのセル値を入力(反映)することは可能でしょうか? 例2)次に、「オプションボタン2」を選択すると、例1でテキストボックスに入力(反映)した値を消去し、かつ、このテキストボックスに数値を直接入力したら、ワークシートの別セルに入力した数値が反映されるようにすることは可能でしょうか? 例1・2)についてどのようなマクロを組めばよいのでしょうか? マクロにお詳しい方、大変申し訳ございませんか、ご指導お願いいたします。

  • access テクストボックスの入力文字数制限

    access2007にて フォームのテキストボックスの入力文字数を制限したいのですがうまくいきません。英数字などはうまくいくのですが、ひらがなや漢字などまだ入力値が確定していない場合は不可能なのでしょうか? ちなみに、すべてキー入力時で制限をかけたいです。ご指導お願いいたします。

  • VBS Webのテキストボックスに入力

    VBSでWEB上の指定したページの複数のテキストボックスに特定の文字を入力するコードを作成しています。しかし、テキストボックスに文字がすでに入力されていると、上書きされてしまいます。テキストボックスに文字が入力されているか判断して、入力されていれば文字を入力しない。また、入力されていればその続きに文字を入力する方法はあるのでしょうか?あるならば方法を教えて欲しいです。