2017-04-06 11 views
1

以下のコードを使用するとランタイムオーバーフロー例外が発生します。VB 6 - オーバーフロー例外 - Val()関数を使用したランタイムエラー

私のアプリケーションはビジュアルベーシック6.0です。科学的表記で

Private Sub Command1_Click() 
Dim strItn As String 
strItn = "1d998" 'when strItn has '1d998' then only error comes 

If Val(strItn) = 0 Then 
    MsgBox ("test1") 
Else 
    MsgBox ("else") 
End If 

End Sub 

答えて

5

1d998の数はVBAで利用可能な任意の型の変数にcan be storedより大きくされていることを電源998

に10である、1 * 10^998あります。

実際にこの数値で大きな数値演算を実行する場合は、Handling numbers larger than Long in VBAをチェックアウトする価値があります。

+0

ありがとう@GSerg。 Val()を使用してこの文字列値から数値を取得する方法はありますか? –

+0

この文字列の数値には998の零点があります。あなたはそれで何をするつもりですか、それをどこに保管しますか? – GSerg

+0

私は理解しました。感謝@GSerg。 –

1

ただ溢れO/W 1を返す必要があります1d987入力時にこの

Public Function C_Val(ByVal Value As String) As Double 
    C_Val = Val(Replace(Replace(Value, "e", "_"), "d", "_")) 
End Function 

のような "強化" Val関数を使用します。 eも科学の表記法であり、Valはオーバーフローする可能性があることに注意してください。

関連する問題