- ベストアンサー
Visual Basicの小数点の入力チェック
プログラミング初心者です。 検索してもよく分からかったので、皆様のお力を貸してください。 数値を入力後に、小数点の前後に値が入力されているかどうかをチェックしたいです。 例えば、 .1 や 1. と入力された時に、フォーカスが移動する時にチェックしたと考えております。 お願い致します。
- みんなの回答 (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
その他の回答 (3)
- don_go
- ベストアンサー率31% (336/1059)
instr関数で"."の文字列中の位置をチェック =0:小数点なし =1:前に値なし =文字列長と同じ:後に値なし その他:前後に値あり
- koi1234
- ベストアンサー率53% (1866/3459)
回答ではありません それぞれのプログラムの仕様にもよるので別に そういったインターフェイスが悪いとは言いませんが .1 と入力した場合 0を入力した=0.1 と入力した と判定されたほうが個人的には親切たと思います 実際電卓などではそういった入力して使うこともありますし
お礼
ありがとうございます。自分でもそうだなとは思ったのですが、思いついたことを実行させたくて仕方なかったんです笑
- bin-chan
- ベストアンサー率33% (1403/4213)
てっとり早いのは、SPLIT関数で”.”を区切り文字にして配列にする。 要素数が1か2なら良いがそれ以外は差し戻し。(小数点多すぎ) 要素(O)が整数部、要素(1)があれば小数部。 要素ごとにCSTR(CLNG(要素))と比較して不一致なら数字以外を含むので差し戻し。 要素(O)が空文字なら、Οを補う。 イベントに全て記述すると大変なのでサブルーチン化すると良いですよ。
お礼
回答ありがとうございます。自分が今作ってるものにうまく合わせると実行出来ました。