• ベストアンサー

TextBoxに特定の文字のみ入力を許す

VBの初心者です。 TextBoxに特定の文字は入力させないなどの制限をしたいです。 例えば半角カタカナ(6)の状態で、 1."/+"と入力し、[Enter]にて決定すると、"/"と表示される 2."+"と入力し、[Enter]にて決定すると、"+"と表示される (特定の順番の、特定の文字のみ入力制限をかける) 以上のような動きにするにはどうすればよいのでしょうか? よろしくお願いします。 ちなみにVB6.0で、OSはWinXP Professionalです。

  • rrr-1
  • お礼率80% (4/5)

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

  • ベストアンサー
  • jun2249
  • ベストアンサー率30% (67/222)
回答No.1

EnterのClikまたはKeyPressイベントで もしTextBox1.Text = "/+" のときは TextBox1.Text = "/" というようにTextBoxに再度値を代入するようにすればいいと思いますが。

rrr-1
質問者

お礼

ありがとうございます。 求められているのがそれほど難しいものではなかったので、KeyPressのみで以下のような感じで対応しました。ソースは後で直します。 Private Sub Text1_KeyPress(KeyAscii As Integer) If Me.Text1.Text = "/" Then KeyAscii = 0 Exit Sub End If Select Case KeyAscii Case Asc("/") Debug.Print "/" Case Asc("+") Debug.Print "+" End Select End Sub

その他の回答 (2)

回答No.3

 その他、Ctrl+V や 右クリック→貼り付け をするユーザーもいますので、対策を考えとく必要あります。

rrr-1
質問者

お礼

そういわれれば、そうでした。 いろいろ考えなきゃいけないんですね。

回答No.2

キーイベント内に エンターキーのキーコード判定で識別させ テキストボックス内の文字列をサーチして 編集させればいいです

rrr-1
質問者

お礼

ありがとうございました。 変換待ちの文字列への[Enter]キー押下では、[Enter]キーに対するKeyDownとKeyPressはおきなかったみたいなんですが、やり方が悪かったのでしょうか?

rrr-1
質問者

補足

ありがとうございました。 変換待ちの文字列への[Enter]キー押下では、[Enter]キーに対するKeyDownとKeyPressはおきなかったみたいなんですが、やり方が悪かったのでしょうか?

関連するQ&A

  • TextBoxに入力した文字を保存

    VB2010を使っています。 CheckBox1にチェックを入れるとTextBox1とTextBox2に入力された文字が次回起動時から記憶される、というものを作りたいです。 教えて下さい。

  • VB2010 TextBoxの文字列に正しく入力されないのは何故ですか

    VB2010 TextBoxの文字列に正しく入力されないのは何故ですか? string型の変数に文字列を入れ、TextBox.Textに代入すると文字列の後ろが切れてしまう。 Dim st As String st="s01114DG000555<0?e09" TextBox.Text = st この場合、TextBox.Textには"s01114DG000555<0"となり、後ろの4文字が切れてしまっている。 ちなみに、 TextBox.Text = "s01114DG000555<0?e09" とすると、正常に全文字数が入る。 半角文字列の塊なのに、どうしてこのようなことが起きるのでしょうか? また、これの対応策は何ですか? 以上、よろしくお願いします。

  • TextBoxに"333"と入力されても"000333"として扱いたい

    VB.NETです。 フォーム上のTextBox(MaxLength=6)に、"333"と入力されても"000333"として、"4444"と入力されても"004444"として、TextBox内に表示させ、それを変数に渡したいのですが、良いフォーマット手法があれば、ご教授下さいませ。

  • VB2005 TextBoxに何も入力しない場合のエラー

    VB入門者なので、よろしくお願いします。 VB2005で、Textboxに何も文字を入力しないで Button1をクリックしたら、  MessageBox.Show("何か入力してください", "エラーメッセージ") の様に何かエラーメッセージが表示されるようにしたいのですが、何かいい方法はありますか? ちなみにTextboxに入力するものは、ひらがな、数字、漢字、ローマ字 なんでも入力できるようにしています。

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

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

  • TextBoxに値が入力されない場合,次のTextBoxに移動できないようにしたい

    TextBox1には、1~9までの値が入力されるようにしています。 デフォルトで"0"表示しています。 TextBox1に、1~9までのどれかの値が入力されない限り、TextBox2にタブ移動できないようにしたいのですが。 つまり、TextBoxに決められた範囲の値での、必須入力制限を設けたいのです。 IF文などで、TextBox1に"0"以外の値が入っているかどうか、判定させればできるかと思うのですが、 もっと簡単に、TextBoxに必須入力の制限を機能させることはできますでしょうか?

  • Access97:漢字を除いて全角文字の入力を禁止するには

    使う文字 漢字、半角英数、半角カタカナ、半角括弧() 禁止文字 全角英数、全角カタカナ ひらがな どうやったら入力制限出来るでしょうか?

  • 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 ↑見にくいかもしれませんがコードです。 この方法ではだめなのでしょうか? 回答をお願いします

  • 文字入力が全然普通にできません・・。

    文字を打つと勝手に半角のカタカナになったりします。 例えば「A」を打つと「あ」と一旦表示されますが、勝手に「ア」と なってしまったりシマす・・。enterを押さないと「あ」と「ア」勝手に変わりつづけてます・・。「SA」と打つと「sア」となったり・・。 たすけてください・・。

  • TextBox内で日本語入力中を判断する方法

    TextBox内で「Enter」PUSHの有無を下記コードで実現しておりますが Private Sub TextBox1_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then     処理 End If End Sub 日本語変換の際(もじ→文字)の「Enter」を処理対象外にする方法を教えていただけないでしょうか? もしくは日本語入力中を判断する方法を教えていただけないでしょうか? 言語はVB6.0です。 よろしくお願い致します。

専門家に質問してみよう