• ベストアンサー

数字以外を排除するには

いつもお世話になっています。 数字以外が入力された場合エラーを出すには、IsNumeric()を使うのが一般的かと思いますが、¥やeやdは数字として認識していしまいます。これらもアウトにする方法というのはあるのでしょうか?

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

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

数値、文字列(テキストボックス値など)を1桁ずつ、チェック対象にして For K = 1 To Len(A) 、Mid(A, K, 1)の1文字について 文字コード(0-9、0-9)かどうかチェックしては。 どんな文字コードでも0-9、0-9は連続したコードになっているでしょう。 比較なら<と>が使え、 Case文ならToが使えるでしょう。 全角と半角両方認めるかどうか。

その他の回答 (3)

  • tkrn
  • ベストアンサー率53% (33/62)
回答No.4

VB2005であれば、 Integer.TryParseメソッドで判定するのはどうでしょうか? Dim int As Integer If Integer.TryParse("123456", int) = True Then '数字の場合 Else '数字でない場合 End If

noname#140971
noname#140971
回答No.3

[イミディエイト] ? IsNumber(123) True ? IsNumber("\123") False ? IsNumber(-123) True ? IsNumber("3e2") False ? IsNumber("123-") True ? IsNumber("001") False 手っ取り早いのは、このような IsNumber 関数などを自作することです。 もちろん、そのためには、 IsNumber 関数の仕様設計が先決です。 Public Function IsNumber(ByVal strNumber As String) As Boolean   Dim I As Integer   Dim L As Integer      L = Len(strNumber) * (Left$(strNumber, 1) <> "0") * -1   For I = 1 To L     If <I番目の桁が文字列 "0123456789+-" に含まれない> Then       Exit For     End If   Next I   IsNumber = CBool((I > L) And (L <> 0)) End Function ・For ループ手前で、チェックする桁数を確定する。 ・その場合、先頭が"0"ならばループ回数はゼロにする。 ・For ループでは、 <I番目の桁が文字列 "0123456789+-" に含まれない>を判定。 ・含まれなければ、テストを中止してループから抜ける。 ・I>L ならば、全てが数字に該当する文字だったということ。----> (I > L) ・L=0 ならば、当然に数字ではない。-----------------------> (L <> 0) ∴IsNumber = CBool((I > L) And (L <> 0)) <I番目の桁が文字列 "0123456789+-" に含まれない>の判定には、Instr関数、Mid$関数と用いるといいです。

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

ここに数値チェック関数が載っています。 http://homepage1.nifty.com/rucio/main/technique/InputChk2.htm

関連するQ&A

  • vb6でテキスト入力の数字を判定したい。

    お世話になります。 XPでvb6を使ってプログラムを作っています。 テキスト形式で入力された文字が数字の0から15までの数字かを判断したいのですが IsNumeric関数で数字か数字以外の文字かを判定した後、 VAL関数で判定とプログラミングしたところ 入力された値が”1d1”だと IsNumeric関数はTrue、VAL関数は10になり 正しい入力と判断されてしまします。 何かいい方法があればご教授頂きたく宜しくお願いします。 以上です。

  • 数字以外の入力をエラーにするには?

    分からないのでよろしくお願いします。 テキストボックスに一つでも数字以外の文字を入力したらエラーメッセージを出すようにしたいのです。小数点も不可にしたいです。 つまり、整数だけを許可したいです。 Dim suuji As string suuji= text1.Text If Not IsNumeric(CStr(suuji.ToString)) Then MsgBox("入力値が数字ではありません", MsgBoxStyle.Critical, "エラー") Exit Sub End If こうしたのですが、小数点は通ってしまいます。 どうすればいいかご存知の方、教えてください。

  • Access VBAで、数字だけをチェックする方法。

    Access VBAで、数字だけをチェックする方法。 お世話になっております。 Access2002 VBAで、テキストボックスに入力された内容が、 数字(整数のみ)だけかをチェックしたいのです。 しかし、IsNumeric使用すると、 例> IsNumeric("1000,")=True IsNumeric("1000.")=True IsNumeric("1000+")=True となってしまいますし、 Valを使用すると、0(ゼロ)のチェックが出来ません。 ちょっと思いつかないので、 If txt_Word.Value <> Trim(Str(Val(txt_Word.Value)))) Then 'エラー処理 End If とか、 ループで回し、1文字ずつIsNumericするか・・・とか、馬鹿なことを思ってしまっています。 ちなみに、当テキストボックスは、パターンによって文字も許容したりするので、 書式設定で数字のみ入力は出来ません。 何か、本当に数字のみかをチェックするよい方法はありますか? よろしくお願いいたします。

  • 数字とそれ以外の区別

    数字(1とか2とか100とか1200とか)とそれ以外を区別するのは どのような関数を使うのでしょうか? フォームで数字が入力された場合、計算処理をして それ以外は、エラーを出したいのですが、、、、 全く初心者で、書籍を片手にあれこれやっているのですが つまづいてしまいました。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 入力値が1以下、かつ数字以外の文字の場合・・・

    皆様の知恵を貸してください!! 素数判定問題で、 「入力値が1以下、かつ数字以外の文字の場合、その旨 エラーメッセージとして表示&再入力させる」 という要求事項があるのですが… /* キーボードからの入力を受け付ける */ scanf("%d", &number); /**== 入力値をチェック ==**/ /* 入力値が1以下の場合、再入力を促す */ while(number <= 1) { printf("2以上の数を入力してください。\n"); } /* 入力値が数字以外の文字の場合、再入力を促す */ while(★) { printf("数字を入力してください。\n"); } 上記ソースの★のところになんと入れて良いかわかりません!! 課題の提出が明日なので…。 大至急、教えてください。よろしくお願いします!

  • 数字以外の文字列判定方法

    フォームで数字以外を入力した場合に、 エラーのアラートを出したいのですが、 その文字列の判定方法及び、アラートの 出し方がわかりません…。 ご存知の方は教えてください。 よろしくお願いします。

  • 数字以外が入力されたらエラー文を出したい。

    scanfで数字を取り込みたいのですが、ここでaなどのアルファベットや記号を入力すると、無限ループが発生してしまいます。 エラーが出ないように、数字以外が入力されたら、エラーメッセージを出すようなプログラムを作りたいのですが、どうすれば出来るでしょうか。

  • 数字以外の記号をカウントする

    毎々お世話になっております。 サウナマンです。 今回はエクセルをいじっていて 出てきた困難にお知恵をおかしください。 各セルに○や△を入力し、 一番下のセルでそれらの合計数を 表示させるにはどのような方法が あるのでしょうか? 例: ○ ○ ○ 3 といったようなことを関数を 使っていろいろ試したのですが、 ○を数字の1として認識させる 方法がどうしてもわかりません。 大変お手数おかけしますが 何卒よろしくお願い申し上げます。

  • 塗りつぶしたセルの対称となるセルの数字を抜き出す

    いつもお世話になっております。 よろしければ回答をお願いいたします。 【質問】 添付図の様にA1~E20までに1~31迄の数字が重複有りで入っています。 それを、G2~L2の数字で検索します。 検索できたらそのセルを赤く塗り潰します。 赤く塗りつぶしたセルがC列以外の場合、 対称(A列の対称はE列、B列の対称はD列)となる数字を G5から下に並べる方法が知りたいです。 【注意事項】 ・使用するエクセルは2016です。 ・G2~L2に入る数字は1~31迄で重複無しです。 以上、よろしくお願いいたします。

  • VBAで英数字入力チェックしたい。

    いつもお世話になります。 いままで、ある項目の入力チェックを数字のみで 行っていたところ【IsNumeric】を英数字で行いたいのですが いくら調べても見当たりません・・・ 知っている方、どうかご指南ください。 よろしくお願いします。

専門家に質問してみよう