VB2008 加算でOverflowException への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 たか  (社会人)
投稿日時
2009/2/4 03:23:28
けろ-みお さん
レス有り難うございます。
エラーが出なくなりました!
プログラミングを始めて今日で4日目なもので...(言い訳になりませんね)
原因など分かりませんが、入門書を購入して勉強することにしました。
初心者向きと薦められたのでVBを始めたんですが、難しいですね...
お世話になりました
レス有り難うございます。
エラーが出なくなりました!
プログラミングを始めて今日で4日目なもので...(言い訳になりませんね)
原因など分かりませんが、入門書を購入して勉強することにしました。
初心者向きと薦められたのでVBを始めたんですが、難しいですね...
お世話になりました
投稿者 (削除されました)  ()
投稿日時
2009/2/3 18:17:26
(削除されました)
投稿者 (削除されました)  ()
投稿日時
2009/2/3 18:13:38
(削除されました)
投稿者 けろ-みお  (社会人)
投稿日時
2009/2/3 18:13:35
ちなみに私のところでは、たかさんが提示したコードで、ちゃんと動きましたので、
再現ができなかったのですが、
jk1, jk2, jk3, jk4, jk5 をShort型で処理するのであれば、下記のコードのように、Convert.ToInt16か、CShortを使ってみると結果はどうなりますか?
上記のコードでもし、OverflowExceptionが消えないようであれば、他の原因も考えられるので
その時は、またお尋ねください。
再現ができなかったのですが、
jk1, jk2, jk3, jk4, jk5 をShort型で処理するのであれば、下記のコードのように、Convert.ToInt16か、CShortを使ってみると結果はどうなりますか?
Dim jjk1 As Double
Dim jk1, jk2, jk3, jk4, jk5 As Short
Dim stra As String
' OKデータ
'stra = "0010030030055"
' NGデータ
stra = "1190720780286"
' もしくは、Convert.ToInt16でなくても、CShortでも良い
jk1 = Convert.ToInt16(Mid(stra, 1, 3))
jk2 = Convert.ToInt16(Mid(stra, 4, 3))
jk3 = Convert.ToInt16(Mid(stra, 7, 3))
jk4 = Convert.ToInt16(Mid(stra, 10, 4))
jk5 = jk1 + jk2 + jk3 + jk4
' OKデータだと、62、NGとおっしゃっているデータだと555になる
Console.WriteLine(jk5)
jjk1 = jk1 / jk5 * 100
' NGと言われているデータだと、「21.441441441441441」になる
Console.WriteLine(jjk1)
上記のコードでもし、OverflowExceptionが消えないようであれば、他の原因も考えられるので
その時は、またお尋ねください。
投稿者 (削除されました)  ()
投稿日時
2009/2/3 18:12:15
(削除されました)
投稿者 (削除されました)  ()
投稿日時
2009/2/3 18:11:07
(削除されました)
投稿者 たか  (社会人)
投稿日時
2009/2/3 11:18:41
教えて下さい。
リストボックスからデータを取り込んで数値に変換し、率を出すプログラムを作りたいのですが、
stra = "0010030030055"
jk1 = Val(Mid(stra,1,3))
jk2 = Val(Mid(stra,4,3))
jk3 = Val(Mid(stra,7,3))
jk4 = Val(Mid(stra,10,4))
jk5 = jk1+jk2+jk3+jk4 (jk5=62)
jjk1 = jk1/jk5*100 ...のようにプログラムし、実行するとエラーはでないのですが、
stra = "1190720780286" このデータだと
jk5 = jk1+jk2+jk3+jk4 この行でOverflowExceptionになります。
(jk5=119+72+78+286 で 555)
jjk1 は Double 、jk1,jk2,jk3,jk4,jk5 は Short で宣言しています。
Integer で宣言しても同じエラーが出ます。
なぜエラーが出るのでしょうか?
対処のしかたを教えて下さい。
宜しくお願いします。
リストボックスからデータを取り込んで数値に変換し、率を出すプログラムを作りたいのですが、
stra = "0010030030055"
jk1 = Val(Mid(stra,1,3))
jk2 = Val(Mid(stra,4,3))
jk3 = Val(Mid(stra,7,3))
jk4 = Val(Mid(stra,10,4))
jk5 = jk1+jk2+jk3+jk4 (jk5=62)
jjk1 = jk1/jk5*100 ...のようにプログラムし、実行するとエラーはでないのですが、
stra = "1190720780286" このデータだと
jk5 = jk1+jk2+jk3+jk4 この行でOverflowExceptionになります。
(jk5=119+72+78+286 で 555)
jjk1 は Double 、jk1,jk2,jk3,jk4,jk5 は Short で宣言しています。
Integer で宣言しても同じエラーが出ます。
なぜエラーが出るのでしょうか?
対処のしかたを教えて下さい。
宜しくお願いします。
エラーが出なくなったのは、良かったですね。
しかし、具体的にどんな対応をしたらエラーが出なくなったのか?情報は掲載して頂きたいです。
今後、同じ現象で悩まれる方が、この掲示板を見たとき、「結局、どうなったの?」というのが、
たかさんからのご返答からだと読み取れなかったため、
例え原因がわからなかったとしても、具体的に何をしたらエラーが出なくなったのか?
情報を掲載して頂けると助かります。
例:
・上記、私が提示したコードをコピー&ペーストしたら、エラーが出なくなったのか?
・Visual Studio 2008 や パソコンを再起動したらエラーが出なくなったのか?等・・・
今後、同じ問題で悩まれる方がいらっしゃった場合、情報を共有できますので、
ご協力宜しくお願いします。