• ベストアンサー

数字以外の入力をエラーにするには?

分からないのでよろしくお願いします。 テキストボックスに一つでも数字以外の文字を入力したらエラーメッセージを出すようにしたいのです。小数点も不可にしたいです。 つまり、整数だけを許可したいです。 Dim suuji As string suuji= text1.Text If Not IsNumeric(CStr(suuji.ToString)) Then MsgBox("入力値が数字ではありません", MsgBoxStyle.Critical, "エラー") Exit Sub End If こうしたのですが、小数点は通ってしまいます。 どうすればいいかご存知の方、教えてください。

  • jmwp
  • お礼率50% (6/12)

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

  • ベストアンサー
  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

' 数字か? If IsNumeric(CStr(suuji.ToString)) Then  ' ピリオドが含まれるか?  If InStr(suuji,".") > 0 then   MsgBox("入力値が数字ではありません", MsgBoxStyle.Critical, "エラー")  End If Exit Sub

jmwp
質問者

お礼

ありがとうございました。 こちらの方法でさせていただいたら、 今まで対処の分からなかった小数点をエラーにすることが出来ました。

その他の回答 (3)

noname#76085
noname#76085
回答No.4

だぁぁ、誤字です。 方→型 自分も整数値入力の処理を考えないとな~ と、思っていたところにこの質問がありましのでちょうどいいタイミングでした。 「きっかけ」を作ってくれてありがとうございます。

jmwp
質問者

お礼

ごきっかけとなって本当に良かったです。 こちらこそ一生懸命にお答え頂き大変嬉しかったです。 どうもありがとうございました。

noname#76085
noname#76085
回答No.3

Dim x As Boolean If (Integer.TryParse(Me.TextBox1.Text, x)) Then   MessageBox.Show("Value is " + Me.TextBox1.Text) Else   MessageBox.Show("Not Integer") End If 変数の方を間違えていました。

noname#76085
noname#76085
回答No.2

Dim x As Integer '~.TextはIntegerに変換できるか? If (Integer.TryParse(Me.TextBox1.Text, x)) Then   MessageBox.Show("Integer") Else   MessageBox.Show("Not Integer") End If このソースはインデントを表わすため全角スペースが混じっています。 あと、Ifの無駄なかっこは普段C#を使っているための癖です。 【余計なおせっかい】 IsNumericはMicrosoft.VisualBasicの名前空間に属します。 この名前空間は過去のVisual Basicとある程度の互換性を保つために用意されているので、使用するべきではない、という話を聞いたことがあります。

jmwp
質問者

お礼

そうなんですか。 IsNumericは使用すべきではないのですか。 初めて知りました。 こちらのやり方も参考になり、大変勉強になりました。 ありがとうございました。

関連するQ&A

  • VB2010入力制御について

    ・計算機アプリケーションです ・テキストボックスは数値と「-(マイナス)」「.(小数点)」以外は入力できないように制御しています。 ・テキストボックス1と2に入力したものをボタン1を押して計算し、ラベル2に表示します。 テキストボックスに数値以外が、もしくは「3-2」「.32」「32.」等の不正な値が入った場合に、メッセージボックスを出して入力の誤りを指摘するプログラムを書きたいです。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ If Not IsNumeric(TextBox1.Text) Then MsgBox("不正な値です", vbExclamation, "ERROR") Label2.Text = "ERROR" ElseIf Not IsNumeric(TextBox2.Text) Then MsgBox("不正な値です", vbExclamation, "ERROR") Label2.Text = "ERROR" End If End Sub 色々と調べてみて、IsNumericが使えそうだったのでこのプログラムを書いたのですが、 これだと「-」や「.」だけを書いた場合にはちゃんとエラーメッセージが出ますが、 「32-」「.32」「32.」等は数字だけを認識して、計算結果を表示してしまいます。 何が足りないのか、もしくは使用している関数を変えたほうがいいのか、アドバイスいただければ幸いです。 以上、ご回答宜しくお願い致します。

  • Access VBAで、数字だけをチェックする方法。

    Access VBAで、数字だけをチェックする方法。 お世話になっております。 Access2002 VBAで、テキストボックスに入力された内容が、 数字(整数のみ)だけかをチェックしたいのです。 しかし、IsNumeric使用すると、 例> IsNumeric("1000,")=True IsNumeric("1000.")=True IsNumeric("1000+")=True となってしまいますし、 Valを使用すると、0(ゼロ)のチェックが出来ません。 ちょっと思いつかないので、 If txt_Word.Value <> Trim(Str(Val(txt_Word.Value)))) Then 'エラー処理 End If とか、 ループで回し、1文字ずつIsNumericするか・・・とか、馬鹿なことを思ってしまっています。 ちなみに、当テキストボックスは、パターンによって文字も許容したりするので、 書式設定で数字のみ入力は出来ません。 何か、本当に数字のみかをチェックするよい方法はありますか? よろしくお願いいたします。

  • 入力チェックについて

    体重を入力するテキストボックスがあります。 整数部分と小数部分は分けないので、 入力できる種類は半角数字とドットです。 整数部分は3桁まで、小数点以下は第一位までとする 入力チェックをつけたいのですが、 整数部分と小数点部分を別々にチェックするにはどのような命令を使用すればよいでしょうか。 (60, 60.1 , 105 などのパターンが考えられると思います。)

  • 非整数を入力したらエラーを表示させたいのですが・・・

    入力値をnに格納し非整数を検出したときにエラー表示させたいのですが、処理に困っています。 if( (double)n || (char)n) printf("error\n"); だともちろん整数のときも無理になってしまいますし・・・。 小数点を検出したときはどのようにしたらよいのでしょうか?

  • 入力値が小数なら、整数部・小数部の桁チェックをしたい。

    VB2005環境です。 テキストボックスに数値が入力された時、整数部分が4桁以上か、 小数部分が2桁以上になっている場合、警告メッセージを出したいと 考えています。 具体的には、 0.1→OK 99.9→OK 100.1→OK 0.01→NG 1001.9→NG 0.99→NG 1111→NG テキストボックスは数字以外の入力も許可しており、数字を 入力した場合だけのチェックです。 まずIsNumericで数値判定を行っているのですが、その後、上述の 小数桁チェックをどうしたら良いか悩んでいます。 また、99を入力した場合は99.0、09.1と入力した場合には9.1と、 整数部は一番左側に0があれば消し、小数部は未入力ならば".0"を 追加できたらと思っているのですが、うまくいきません。 実現するために必要な処理は、 ・入力値が数値か ・数値であれば、整数か、小数か ・整数部の桁チェック ・小数部の桁チェック(小数時) ・整数であれば、999.9の形になるよう変換 といったところかなと思うんですが、まず小数チェックで 躓いています。 参考にロジックを交えて教えていただけないでしょうか。 宜しくお願いします。

  • 整数かどうかチェックする

    テキストボックスに数字を入力させてボタンを押した時、 その数字が1桁の整数(0から9)でなければエラーメッセージを出すようにしたいのですが、何か簡単なコードはありますか? (5.6などの小数や、"a"や"あ"など数字ではない文字が入力された場合も同様にエラーを出したい) 1つずつ0から9までifでチェックしなければいけないのでしょうか。

  • 数字以外を排除するには

    いつもお世話になっています。 数字以外が入力された場合エラーを出すには、IsNumeric()を使うのが一般的かと思いますが、¥やeやdは数字として認識していしまいます。これらもアウトにする方法というのはあるのでしょうか?

  • エクセルVBAにて、2回エラーになってしまう

    現在、エクセルVBAにて、エラーのチェックを行っているのですが、 他の数値項目は問題ないのですが、下記の個所のみ、 エラーメッセージが2回出力されます。 (1回目のExitSubがきかない) お分かりになる方がおられましたら、ご回答、よろしくお願い致します。 '費用(明細1) Private Sub txtMei4_1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Set mytxt = Me.Controls("txtMei4_1") If mytxt.Text <> "" And _ IsNumeric(mytxt.Text) = False Then MsgBox "数値を入力してください" Cancel = True Exit Sub ←ここで、Exitせず、もう一度このPrivate Subに戻ってくる End If End Sub 他のテキストでも同様のチェックをしているのですが、 この部分のみ、msgboxが2回出力されます。 申し訳ありません。 よろしくお願い致します。

  • ファイルメーカpro11 数字入力について

    ファイルメーカーpro 11の数字データ入力について。 計算値が整数でなくても表示を整数にしたい場合 レイアウト画面で インスペクタを開き書式設定で 書式 小数 を選択し 小数点以下の桁数を0にすれば良いと思うのですが 1以下にならないのですがどうすればよいのですか。

    • 締切済み
    • Mac
  • VBAで数値入力について

    Excel VBAで、UserFormにTextBoxを配置しています。 TextBoxに入力された数値は、半角数値で正数で小数点以下の桁数は1までと制限したいです。 現在は下記のプログラムにしているのですが、「1.2.3」と入力されるとエラーが表示されずに通ってしまいます。。。 どのようにしたらよいのでしょうか。 For i = To Len(TextBox1.Text) If Not Mid(TextBox1.Text, i, 1) Like "[0-9 And .]" Then Message"半角数値ではありません" Exit Sub End If Next i If Val(Text1.Text) = 0 Or TextBox1.Text = "" Then Message"数値を入力してください" Exit Sub End If

専門家に質問してみよう