• ベストアンサー

VBAのTextBoxに半角数字のみ入力したい

VBAでTextBox2には半角数字のみしか入力できないように制御したいのですが、どうしたらよいのでしょうか。 TextBoxのプロパティでIMEModeを「8-fmIMEModeAlpha」というのにしたのですが、半角英字も入力できてしまいます。 どなたかよい方法をご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#3 です。 失礼。#3 だと Tab と Enter まで入力できないので、以下に差し替えます。   blnFlag = ((KeyCode >= 48) * (KeyCode <= 57)) _       + ((KeyCode >= 96) * (KeyCode <= 105)) _       + (KeyCode = 8) + (KeyCode = 13) + (KeyCode = 9) > IMEModeを「8-fmIMEModeAlpha」 これだと入力モードの変更が可能なので、3-fmIMEModeDisable にしといた方が 良いかと思います。

piopao
質問者

お礼

ご回答どうもありがとうございます。 とても詳しく教えていただき、勉強になりました。

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは、KenKen_SP です。 こんな感じで KeyDown イベントを使えば可能だと思います。 Private Sub TextBox1_KeyDown( _   ByVal KeyCode As MSForms.ReturnInteger, _   ByVal Shift As Integer)   Dim blnFlag As Boolean   blnFlag = ((KeyCode >= 48) * (KeyCode <= 57)) _       + ((KeyCode >= 96) * (KeyCode <= 105)) _       + (KeyCode = 8)   If Not blnFlag Then     KeyCode = 0   End If End Sub 半角数字と Back Space しか受け付けません。Excel ユーザーフォーム なら、この方法で Ctrl + V が抑止できますし、右クリックメニュー は最初から表示されませんので、コピペは不可能です。 この方法で十分だと思いますが、ユーザーによる手動の入力を抑止して いるだけで、完全に半角数字以外の入力を抑止しているわけではありま せん。(プログラムからは入力可能とか) 念を入れるなら、Lost イベント等で入力値のチェックも行います。

回答No.2

お世話になります。 残念ながら KeyPress だけだと、コピペされたときには操作内容によっては 発生しないイベントなので確実とは言いがたいです。 (私もかつて悩んだ経験があります) なので、確実なのは LostFocus とかになると思うのですが、 入力時に省かせたいというのであれば Key...系イベント(Down とか Press とか)も LostFocusも どちらからも呼べるようなメソッドを作成すれば 万全かと思います。

参考URL:
http://homepage1.nifty.com/rucio/main/technique/InputChk2.htm
piopao
質問者

お礼

ご回答どうもありがとうございます。 とても勉強になりました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

KeyPressイベントで、キーコードを拾い、選択する、だと思います。 検索サイトで「KeyPress」をキーワードにして、検索してみてください。

piopao
質問者

お礼

ご回答どうもありがとうございました。

関連するQ&A

  • TextBoxに半角数字のみの入力しかできないようにしたい

    タイトルどおりです。 フォームに貼り付けた、TextBoxに、半角数字のみしか入力できないようにしたいです。 000000~999999までのコード(数字)を入力させるようにするわけですが、そのままだと半角英数も全角も入力できてしまいます。 GrapeCity社製のカスタムコントロール「InputMan」の“Number”を用いると簡単なのですが、これだとカーソルがボックス内の右端にきて、一の位から入力が始まってしまいます。 数字は、ボックス内の左側から入力されていくようにしたいのですが、“Number”だとなんか出来なさそう・・・? (“Number”で左側から入力できるならそれがいいのですが) そこで、TextBoxを使うことにしたのですが、TextBoxだと、半角数字のみしか入力できないような制限がかけるのかが、わかりません。 もし、お分かりの方がいらっしゃいましたら、ご教授下さいませ。

  • textboxに数字だけを入力させるには?

    textboxに数字だけを入力させるにはどうすれば良いでしょうか。もしそれが不可でしたら、数字以外は無効にするにはどういう処理をすれば良いですか。初心者ですので、わかりやすく教えて下さい。よろしくお願いします。

  • InputBoxの入力値を半角数字のみと限定する方法

    Excel_VBAで、InputBoxにより半角数字の入力を求めています。入力値が半角数字でない判定をするのに、最も容易な方法はありませんか?"CInt"だと文字列ではダメですし、悩んでおります。 InputBoxに、半角数字のみと限定するようなオプションがあれば良いのですが・・・。

  • DataGridView 列ごとの入力制限

    VB2005環境です。 DataGridViewコントロールの、列ごとに入力制限をかけたいと 思っています。 たとえば、1列目は数字のみ入力可能、2行目は半角英数字…と いった具合です。 また、できればある列にはIMEMODEを設定してやりたいとも 思っています。 KeyDownイベントで、列の名前ごとにif文をかまして、文字を弾けば いいかと思っていたのですが、思ったより手間で、コピペでの入力 には対応できません。 プロパティでなんとかならないかと思ったのですが、デザイナからは そのようなものは見つかりませんでした。 何かシンプルに入力制御をかけられる方法はないでしょうか? ご教授お願いいたします。

  • Textbox

    TextboxをFormに40個置きます。で、実行でFormを出したら1~40の数字をTextboxに表示させるようにしたいのです。 やり方なのですが、各TextプロパティのTextに数字を入れるというやり方ではない方法でやりたいのです。 40個のTextboxを配列にしてtext(0)・・・text(39)でやろうと思ったのですがどうもうまくいきません>< どなたかご教授お願い致しますm(__)m

  • C#のtextBoxについて

    C#のtextBoxについて お世話になります。 textBoxに数字を8桁しか入力出来ない様に制御したいのですが、 どの様にしたらシンプルな記述になりますでしょうか。 どなたかご親切な方、ご教授頂きたく宜しくお願い致します。

  • c♯テキストボックスの半角カナのみの入力

    こんばんは、現在Visual Studio2013でC♯用いてコードを書いています。 そこで困ったことがあるのですが、テキストボックスの入力文字制限で半角カナだけにしたく、コントロールのImeModeプロパティをKatakanaHalfにしたのですが、全角文字も入力出来てしまいます。 ImeModeプロパティのみの変更で半角カナだけの入力が可能だと思ったのですが、他にもプロパティ値を変更する必要はあるのでしょうか?

  • デフォルトで英字は半角入力したい

    かれこれ何年もWindowsを使っているものですが、最近くだらない事で 悩んでいます。(汗) 私は日ごろから英数字は半角で入力をしております。 ですから普段はテンキーで数字を入力して、その後連続で英字を入力しま すと半角の英字が入力されます。 しかし会社で誰かが私のPCを使用したときに全角の英文字を入力した らしく、それ以来英字を入力するたび全角が表示されてしまいます。 前までは(例えば)”0001AAA”と、数字の入力後は必ず半角英字だったの ですが、今では”0001AAA”と全角になってしまいます。 単にF10を押して、半角に変換すればよいのですが、今まで変換もせずに ただEnterを押していただけなので、すごくイラつきます。 Windowsを起動後に、エディターなどで一度F10で全角を半角に変換する と、それ以降の入力は、従来私が行ってきた入力方式に戻るのですが、 再びPCを立ち上げなおすと、やはり全角が表示されます。 IME2000のプロパティなどを見ていても、英字は全角/半角を切り替える 設定は見当たらないので、どう直せばよいやらです。。。 くだらない質問ですが、おわかりになる方いますでしょうか? よろしくお願いします。

  • Word2002 半角数字、半角英字、全角数字、全角英字を別々に検索及び置換する方法?

    Word2002を使用しています。 その1: そこで、半角数字、半角英字、全角数字、全角英字を別々に検索する方法を知りたいです。VBAなどのプログラミングは使用したくありませ ん。例えば、半角数字のみを検索する(該当文字を強調する。)。 検索のみで、この段階では置換しません。 その2: 上記で見つかった半角文字を全角へ(又はその逆で全角文字を半角文字へ)置換する方法を教えて下さい。 よろしくお願いします。

  • VB2005 TextBoxの入力制限について

    はじめて質問させていただきます。 現在、VB2005を使ってプログラムを組んでいるのですが、半角カタカナだけをTextBoxに入力し、表示する方法がわかりません。 Private Sub TextBox6_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox6.KeyDown TextBox6.ImeMode = Windows.Forms.ImeMode.KatakanaHalf End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If (e.KeyChar < "ア"c Or e.KeyChar > "-"c) And e.KeyChar <> vbBack Then e.Handled = True End If End Sub ↑見にくいかもしれませんがコードです。 この方法ではだめなのでしょうか? 回答をお願いします