• ベストアンサー

入力チェックについて

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

  • craftx
  • お礼率48% (388/806)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

VBのバージョンがありません。 Splitで整数部と小数部に分けるか、 正規表現を使って判断します。 'Splitによる方法 Function チェック(ByVal T As String) As Boolean Dim N If T = "" Then     '入力無し     Exit Function End If If Not IsNumeric(T) Then     '数値でない     Exit Function End If N = Split(T, ".") Seelct Case Len(N(0))   Case 0     '整数が無い     Exit Function   Case 1 To 3 : 'OK   Case Else     '整数が3桁以上ある     Exit Function End Select If UBound(N) = 1 Then     Select Case Len(N(1))       Case 0         '少数が無い         Exit Function       Case 1 : 'OK       Case Else         '少数が1桁以上ある         Exit Function     End Select End If チェック = True End Function '正規表現による方法 Function チェック(ByVal T As String) As Boolean Dim N Set N = CreateObject("VBScript.RegExp") N.Pattern = "(^\d{1,3}$)|(^\d{1,3}\.\d{1}$)" チェック = N.Test(T) End Function どっちが楽か一目瞭然ですね。

craftx
質問者

お礼

ありがとうございます。 わかりやすいソースでした。splitは便利ですね。 追加で質問なのですが、半角カナ文字以外の入力時エラーにするチェック方法を教えて頂けませんか。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

VBの質問らしいが、VB.NETかエクセルVBAか(VB6か)など標題に明記すべきあd。 VBAなら 入力された数の桁数の捕捉について Private Sub TextBox1_LostFocus() x = Val(TextBox1.Text) MsgBox x MsgBox Int(x) MsgBox Len(Int(x)) '-- p = InStr(TextBox1.Text, ".") MsgBox p n = Len(x) - p MsgBox n End Sub が参考になるだろう。 参考 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24247&forum=7 の「きくちゃん」 >小数点以下数として x-Int(x) を使うのは危ない。 ーーー 桁数でとらえず 単純に999.99より小などと、事実上で、量的に表せないのかな。

craftx
質問者

お礼

ありがとうございました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

半角カナにマッチする正規表現は以下の通りです。 Finction 半角カナ(ByVal T As String) As Boolean Dim 正規表現 As Object Set 正規表現 = CreateObject("VBScript.RegExp") 正規表現.Pattern = "^[。-゜]+$" 半角カナ = 正規表現.Test(T) End Function 上記は空文字列は不可です。 もし、空文字列をOKにする場合は"^[。-゜]*$"とします。 正規表現は応用範囲が広いので、覚えておかれると 便利です。コテコテ1文字ずつ調べたくないですよね。 http://msdn.microsoft.com/ja-jp/library/cc392487.aspx http://msdn.microsoft.com/ja-jp/library/ae5bf541(VS.80).aspx

craftx
質問者

お礼

ありがとうございました。

  • yhc3594
  • ベストアンサー率27% (25/92)
回答No.1

InStr 関数を使って、小数点の位置を見つけてはどうですか? その後、mid関数で、対象情報を取り出して桁数を判定する。 *小数点が2個入力された場合などを考慮して、事前に  isnumericで数値判定をしておくと、より正確なチェックとなります。

craftx
質問者

お礼

ありがとうございます。 その3つの関数を使うとできますね。 追加で質問なのですが、半角カナ文字以外の入力時エラーにするチェック方法を教えて頂けませんか。

関連するQ&A

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

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

  • 入力チェック

    お世話になります。 JavaScriptでの正規表現で入力チェックをしたいのですが、うまくいきません。 以下のようなことをするのにはどうしたらよいのでしょうか? ■小数点のある数字の入力チェック 整数の最大桁数:6桁 少数の最大桁数:2桁 とします。 例:フィールドに以下を入力した場合 120.50 → OK 10000000.1 → NG 整数の桁数がオーバー 150.1478 → NG 小数の桁数がオーバー

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

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

  • 入力値チェックについて

    access2007 にて・・・ テキストボックスの入力値の最終チェックとして(ボタンを押したときにチェックする)、 半角数字と半角ハイフン以外が入っていたらエラーとしたいのですが、 どのようなコードを書けばよろしいのでしょうか?ご指導願います。

  • 正規表現を用いた整数、少数のチェック

    どうかご教授下さい。 現在JavaScriptによるプログラミングを行っています。 テキストボックスから入力された年齢、身長の値を 正規表現を用いて下記の条件をチェックしようとしていますが上手くいきません。 [条件] ●年齢● 0以上の整数。 半角数字。 0以外の頭に0が来る数字は許可しない。(例:00、012) ●身長● 0より大きい整数または少数。 半角数字、小数点。 整数の場合0以外の頭に0が来る数字は許可しない。(例:00、012) 少数の場合最下位の数字は小数点、0以外のものである。 [現状] ●年齢● 半角数字があれば半角数字以外を許可してしまう。(例:a1、1あ) 0以外の頭に0が来る数字を許可してしまう。(例:00、012) ●身長● 0以外の数字があれば最下位の数字が0でも許可してしまう。(例:123.0) 2つ以上の小数点を許可してしまう。(例:12.3.4、12..3) 上記以外にも自分で気付いていない問題があるかもしれませんが どうか助言頂きたく思います。 宜しくお願いします。 if(age.match(/(0|[1-9][0-9]*)/)){} else{ alert("年齢を半角数字で入力してください。"); } if(height.match(/([1-9][0-9]*|[0-9]+([\.][0-9]+)?[1-9]$)/)){} else{ alert("身長を半角数字で正しく入力してください。"); }

  • .NETでの文字のフォーマットと入力マスク

    VB.NETのテキストボックスにデータを表示するときのフォーマットの指定方法がわかりません。 データベースから「123456」という数をとってきて、テキストボックスには「123,456」と表示するにはどうすればよいのでしょう? また入力するときに整数部3桁+小数部2桁までで入力してもらうにはどうすればいいでしょう? (例)123.45と入力→OK    1234.5と入力→整数部の桁が多いのでエラー    1.234と入力→小数部の桁が多いのでエラー これはテキストボックス以外のものを使用してもかまいません。

  • テキストボックスの入力値チェックについて

    テキストボックスに入力した値に対して半角カナで入力されているかのチェックをコマンドボタン押下時に行いたいのですが、 どのようなコードを書けばよろしいのでしょうか? ついでに、半角数字のみのチェックも教えてください。

  • テキストボックスに「00000」を入力すると「0」になってしまう

    あるテキストボックスには5桁の半角数字を入力させるようにしたいと思っています。 このテキストボックスには以下の入力チェックをかけていますが、「00000」を入力すると「0」と判断されてしまい。一つ目のチェックに引っかかってしまいます。 これを文字列として判断する方法はありますか? または、以下のチェックに引っかからない方法はありますか? よろしくお願いいたします。 (codeにはvalueが入っています。) if(code == 0){ alert("入力してください。"); return false; } if(isFinite(code) == false){ alert("半角数字を入力してください。"); return false; } if(code.length != 5){ alert("5桁入力してください。"); return false; }

  • Access97のテキストボックスプロパティの入力規制について

    質問はAccessのテキストボックスに パスワードを入力する機能についてです。 パスワードは6桁の半角英数字のみ入力可能にしたいです。 現在、以下のことを試し、 半角英数字が6桁入力できるようになりました。 テキストボックスのプロパティで 定型入力部分に「password」と設定しテキストボックスに パスワードが「****」で表示できるようにしました。 そして6桁にしたいので、 入力規制の部分に「like "??????"」と設定しました。 問題は半角英数字は入力できるのですが、 スペースや記号も入力できてしまうことです。 スペースや記号は入力できないように設定することは可能でしょうか? また入力規制の部分で、半角英文字、半角数字を設定することは 可能でしょうか? 何か解決法がありましたら、教えてください。 よろしくお願いします。

  • excelでの数値切り捨て、桁制限をひとつのセルで

    数字を入力した時に、切り捨てと同時に、桁数を揃えることは可能でしょうか 具体的には、 (入力) 12.34  →  012 整数が2桁あるので、小数点以下を切り捨て、頭に「0」をつけ3桁にする        1.23  →  1.2 整数が1桁なので、小数点以下第二位を切り捨て、3桁(3文字?)にする         0.12  →  .12 整数が「0」なので、小数点以下を3桁(3文字)を表示する となるようにしたいです。 入力規則で、[>9.99]0##;[>.99]#.#; と入れて試してみたのですが この場合、入力が「34.56」「3.45」等であると、切り捨てて欲しい部分を四捨五入してしまい (入力) 34.56 → 035   (034になってほしい)       3.45 → 3.5     (3.4になってほしい) となってしまいます。良い方法はあるでしょうか

専門家に質問してみよう