• ベストアンサー

Visual Basicの小数点の入力チェック

プログラミング初心者です。 検索してもよく分からかったので、皆様のお力を貸してください。 数値を入力後に、小数点の前後に値が入力されているかどうかをチェックしたいです。 例えば、 .1 や 1. と入力された時に、フォーカスが移動する時にチェックしたと考えております。 お願い致します。

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

  • ベストアンサー
回答No.4

私なら、以下の様に処理します。 (1)入力文字を半角に変換 (2)数値に変換可能か判定し、数値変数に値をセットする 趣旨と違うかもしれませんが・・ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim strInputValue As String Dim n As Integer Try '空白除去後に半角に変換 strInputValue = StrConv(TextBox1.Text.Trim, VbStrConv.Narrow) '「.」の位置を確認(LastIndexOfは最後の位置確認) n = strInputValue.IndexOf(".") If n = 0 Then TextBox1.Focus() Call MessageBox.Show("「.」が先頭にあります。") ElseIf n = strInputValue.Length Then TextBox1.Focus() Call MessageBox.Show("「.」が最後尾にあります。") ElseIf n < 0 Then Call MessageBox.Show("「.」は使用していません。") Else Call MessageBox.Show("「.」は中間位置にあります。") End If '別ですが、 '数値扱いの確認 If IsNumeric(strInputValue) Then Call MessageBox.Show("数値扱いです", "数値○") Dim decValue As Decimal decValue = Decimal.Parse(strInputValue) Else TextBox1.Focus() Call MessageBox.Show("数値を入力して下さい。", "数値×", MessageBoxButtons.OK, MessageBoxIcon.Error) End If Catch ex As Exception Call MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub

takahuji
質問者

お礼

回答ありがとうございます。自分が今作ってるものにうまく合わせると実行出来ました。

その他の回答 (3)

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

instr関数で"."の文字列中の位置をチェック =0:小数点なし =1:前に値なし =文字列長と同じ:後に値なし その他:前後に値あり

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

回答ではありません それぞれのプログラムの仕様にもよるので別に そういったインターフェイスが悪いとは言いませんが .1 と入力した場合 0を入力した=0.1 と入力した と判定されたほうが個人的には親切たと思います 実際電卓などではそういった入力して使うこともありますし

takahuji
質問者

お礼

ありがとうございます。自分でもそうだなとは思ったのですが、思いついたことを実行させたくて仕方なかったんです笑

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

てっとり早いのは、SPLIT関数で”.”を区切り文字にして配列にする。 要素数が1か2なら良いがそれ以外は差し戻し。(小数点多すぎ) 要素(O)が整数部、要素(1)があれば小数部。 要素ごとにCSTR(CLNG(要素))と比較して不一致なら数字以外を含むので差し戻し。 要素(O)が空文字なら、Οを補う。 イベントに全て記述すると大変なのでサブルーチン化すると良いですよ。

関連するQ&A

  • 小数点入力チェック

    以下の処理を入力チェックしたいのですが、どうしたら宜しいのでしょうか?お願いします。 num="1.999" →OK num="1.11" →OK num="1" →OK num="11.11" →NG if(!num.match(/[0-9]*\.[0-9][0-9][0-9]+/)){ alert("小数点形式[0.001~9.999]の範囲で入力してください。"); return; }

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

    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の形になるよう変換 といったところかなと思うんですが、まず小数チェックで 躓いています。 参考にロジックを交えて教えていただけないでしょうか。 宜しくお願いします。

  • 小数点以下の入力規則

    !教えてください! セルの中に数値を入力するときに、小数点第2位までは数値が入力でき、小数点第3位に数値が入ると入力規則エラーがかかり入力できないように設定したいのですが、どのように設定したらよいのでしょうか?また、入力規則以外のエラー設定方法をご存知の方いらっしゃいましたら、ご教授ください。

  • 少数点のチェック

    入力された値の数値チェックと数値ならば、少数点第2までの入力を許可するというスクリプトをまとめてつくりたいのですが、なにかサンプルのようなものはないでしょうか? よろしくおねがいします。

  • 1セルに6桁以上入力できない。小数点以下の表示が00になってしまう。

    エクセルの1つのセルに1,000,000と入力するも1,000となってしまいます。 数式と値をクリアにしても、表示形式を標準や数値や文字列に設定しても下3桁が入りません。 それと小数点第2位まで計算したいのに、小数点第2位は.00なってしまいます。 それと小数点以下を切り捨てで表示させたいのに、四捨五入になってしまいます。

  • エクセルの配置での小数点での揃え方。

    エクセルで表を書いていて数値を小数点の位置で揃エクセルで表を書いていて数値を小数点の位置で揃えたいのですがどうやったらいいのでしょうか?? (例) -0.025 20.55 10.0 のように小数点が揃うように配置したいのですが・・・。 初心者なのでわかりません。教えてください!!

  • エクセルで整数入力値を小数点にするユーザー定義

    エクセル2003です。 下記の入力をした場合、セル内が小数点になる方法を教えて下さい。 Sheet内で整数と小数点が必要なのですが、ツール→オプション→編集→小数点位置を固定の チェックを入れると、A1セルに入力値1234が12.34となり問題はないのですが、A2セルに 入力値1234と入力した場合1234としたいのですが、ユーザー定義で設定できますか? A1 「1234」を入力した場合→「12.34」となるのでOK A2 「1234」を入力した場合→「1234」としたい    小数点位置を固定のチェックを外し、入力値をB1に入力し、A1に数式「=A2/100」を入れる方法 もありますが、本来の入力セルが「AB」欄以降で画面を移動しないといけないので。 宜しくお願いします。

  • EXCELで小数点以下を検索

    22.43とか49.51とか小数点以下2桁の数値を集計する表があるとします。 集計した合計が通常だと71.94とかなるわけです。 ところが、 49.51のところ打ち間違え49.516とか小数点以下を3桁目まで入れてしまった場合、 数値的には71.946ですが、小数点以下2桁表示だと71.95になってしまいますね。。 結果的に集計した合計が違ってしまうので、 大量の数値の中から、通常小数点以下2桁で入力するべきところを 3桁で入れてしまった部分を特定するために、Ctrl+Fとかの検索とかで 一発で特定する方法はありますか?

  • 小数点以下しかない数値の表示

    数値を str(数値)で文字列にしているのですが、小数点以下しかない数値の場合 ”.123”のように0が頭につきません。 どのようにしたら良いのでしょうか。もちろん小数点以上の値の場合はそのまま表示したいです。

  • 小数点を簡単に打つ方法

    Advanced esです。 エクセルを利用したいのですが、小数点を簡単に打てないため、やむなく関数電卓を使ってしまいます。 エクセルだと入力した数値が全部見えて一目瞭然なのですが、小数点一個が打てないため、使えないでいます。 キーボードを出さずに、ダイヤルキーで簡単に打つ方法、どなたかご教授ください。

専門家に質問してみよう