2011-10-03 13 views
1

数値を含む文字列を受け取るスクリプトがあります。文字列を数値に変換する

文字列は「1000」または「1000.25」または「1111111111111111111111111」または「abc111」

かもしれ、私はそれが数であれば、最初にチェックできるようにしたい、それがない場合は失敗するでしょうし、また、分数がある場合は失敗します。

上記のシナリオを確認できる適切な番号タイプに変換するのに問題があります。

基本的には、その数がどれほど大きくても、文字列には整数だけが含まれていることを確認する必要があります。

本当にありがとうございます。

おかげ

デイブ

答えて

0

これを変換するCInt関数を使用するためには、私はあなたが望むものを達成するために使用してきた機能である:

Function is_numeric(ByVal sText) 
    Dim iCnt, sChr 

    is_numeric = True 

    If IsNull(sText) OR sText = "" Then 
     is_numeric = False 
     Exit Function 
    End If 

    If sText = "" Then 
     is_numeric = False 
     Exit Function 
    End If 

    For iCnt = 1 To Len(sText) 
     sChr = Mid(sText, iCnt, 1) 
      If Asc(sChr) < 48 OR Asc(sChr) > 57 Then 
      is_numeric = False 
      Exit For 
     End If 
    Next 
End Function 
+1

ありがとうございます。私はこの解決策が気に入っていますが、文字列内の各文字にisNumericを行うように若干修正しました。これはすべての非数字文字で失敗するはずです。 – Dave

0

はすでにCIntとCDBLを発見する機会がありましたか?

2

使用IsNumeric関数が数値であるかどうかを確認してから

+0

があることに注意してください整数データ型は-32,768〜32,767の範囲に制限されます。代わりに、longデータ型(clng()で変換)を使用することができます。これは、-2,147,483,648〜2,147,483,647の範囲に制限されています。私はちょうどテストし、cint(32768)またはclng(2147483648)を実行しているときにオーバーフローエラーが発生しました。 – dmogle