電子書籍の厳選無料作品が豊富!

整数部2桁、小数部1桁まで入力可能なテキストの入力チェックは以下で正しいでしょうか。
コンパイラ環境は現在ないので確認お願いします。
・以下でコンパイルエラーは発生しませんか
・入力チェックの方法として正しいでしょうか
間違いやまたよりよい方法がある場合はアドバイスください。

Dim a() as string
a=Split(Text, ".") 'Textは入力値
If(UBound(0) = 1) Then '小数点が入力されたときはa=1となる
If(length(a(0)) < 2) Then
エラー
Else If(length(a(1)) < 1) Then
エラー
End if
Else If
If(length(a(0)) < 2) Then
エラー
End If
End If

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/07/28 16:58

以前も同じような質問されましたよね?


正規表現でチェックした方が楽だと思いますけど・・・
掲題のプログラムから見ると、「整数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 とか
打ち込んでみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/07/28 16:57

一例です。


UBoundの引数が不正、Lengthは配列の要素数なのでLenでないといけない。

If(UBound(a) = 1) Then '小数点が入力されたときはa=1となる
If(len(a(0)) < 2) Then
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
以下のように修正しましたが、どうでしょうか。
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

お礼日時:2011/07/28 12:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A