VB2008 加算でOverflowException

タグの編集
投稿者 たか  (社会人) 投稿日時 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 で宣言しても同じエラーが出ます。

なぜエラーが出るのでしょうか?
対処のしかたを教えて下さい。
宜しくお願いします。


投稿者 (削除されました)  () 投稿日時 2009/2/3 18:11:07
(削除されました)
投稿者 (削除されました)  () 投稿日時 2009/2/3 18:12:15
(削除されました)
投稿者 けろ-みお  (社会人) 投稿日時 2009/2/3 18:13:35
ちなみに私のところでは、たかさんが提示したコードで、ちゃんと動きましたので、
再現ができなかったのですが、
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:13:38
(削除されました)
投稿者 (削除されました)  () 投稿日時 2009/2/3 18:17:26
(削除されました)
投稿者 たか  (社会人) 投稿日時 2009/2/4 03:23:28
けろ-みお さん
レス有り難うございます。

エラーが出なくなりました!
プログラミングを始めて今日で4日目なもので...(言い訳になりませんね)

原因など分かりませんが、入門書を購入して勉強することにしました。
初心者向きと薦められたのでVBを始めたんですが、難しいですね...

お世話になりました
投稿者 けろ-みお  (社会人) 投稿日時 2009/2/4 19:27:49
>原因など分かりませんが、入門書を購入して勉強することにしました

エラーが出なくなったのは、良かったですね。

しかし、具体的にどんな対応をしたらエラーが出なくなったのか?情報は掲載して頂きたいです。

今後、同じ現象で悩まれる方が、この掲示板を見たとき、「結局、どうなったの?」というのが、
たかさんからのご返答からだと読み取れなかったため、
例え原因がわからなかったとしても、具体的に何をしたらエラーが出なくなったのか?
情報を掲載して頂けると助かります。

例:
・上記、私が提示したコードをコピー&ペーストしたら、エラーが出なくなったのか?
・Visual Studio 2008 や パソコンを再起動したらエラーが出なくなったのか?等・・・

今後、同じ問題で悩まれる方がいらっしゃった場合、情報を共有できますので、
ご協力宜しくお願いします。