• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:少数部の判定)

少数部の判定コードで正しい入力チェック方法は?

このQ&Aのポイント
  • 整数部2桁、小数部1桁まで入力可能なテキストの入力チェック方法について質問です。
  • コンパイルエラーの発生の有無や、入力チェックの方法が正しいかについて確認したいです。
  • また、間違いや改善点があればアドバイスをいただきたいです。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO1です。 整数部は2桁、小数部は1桁しか許容しないのであれば、もう少し簡略出来ますが如何でしょうか。 Dim a() as string a=Split(Text, ".") 'Textは入力値 If UBound(a) = 1 Then '小数点が入力されたときはa=1となる  If len(a(0)) <> 2 Or Len(a(1)) <>1 Then   エラー  End If ElseIf len(a(0)) <> 2 Then  エラー End If

craftx
質問者

お礼

ありがとうございます。 今回別々のエラーメッセージを表示させるのでまとめないでおこうと思います。

その他の回答 (2)

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

以前も同じような質問されましたよね? 正規表現でチェックした方が楽だと思いますけど・・・ 掲題のプログラムから見ると、「整数2桁」または 「整数2桁.小数1桁」しか許さないみたいですね。 この場合は「(^\d{2}$)|(^\d{2}\.\d{1}$)」です。 コンパイラが無くてもVBSやExcelマクロで調べられます。 正規表現を少し解説します。 (A)|(B)は「AまたはB」と言う意味 ^は文字列先頭、$は文字列終端 \dは数字を表し、{2}は2文字を表す ^\d{2}$→数字で始まる+数字は2桁+数字で終わる ^\d{2}\.\d{1}$→数字で始まる+数字は2桁+ピリオドがある         +数字は1桁+数字で終わる そのいずれかのパターンです。 If WScript.Arguments.Count = 0 Then WScript.Echo "文字を入力してください" WScript.Quit End If Dim R, S Set R= CreateObject("VBScript.RegExp") R.Pattern = "(^\d{2}$)|(^\d{2}\.\d{1}$)" S = R.Test(WScript.Arguments(0)) WScript.Echo "結果=" & S 上をテキストファイルhoge.vbsとして格納し、 コマンドプロンプトから cscript hoge.vbs 00.5 とか 打ち込んでみてください。

craftx
質問者

お礼

ご説明ありがとうございます。 たしかに正規表現を使用したほうが便利だと思いますが、 今回は入力チェックのエラーメッセージを使い分けるので使用しないでおこうと思います。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 UBoundの引数が不正、Lengthは配列の要素数なのでLenでないといけない。 If(UBound(a) = 1) Then '小数点が入力されたときはa=1となる If(len(a(0)) < 2) Then

craftx
質問者

お礼

ご回答ありがとうございます。 以下のように修正しましたが、どうでしょうか。 Dim a() as string a=Split(Text, ".") 'Textは入力値 If(UBound(a) = 1) Then '小数点が入力されたときはa=1となる If(len(a(0)) < 2) Then エラー Else If(len(a(1)) < 1) Then エラー End if Else If If(len(a(0)) < 2) Then エラー End If End If

関連するQ&A