Page 135 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼i=10000になる前にエラーで止まってしまうのですが カド 02/9/26(木) 19:10 ┗Re:i=10000になる前にエラーで止まってしまうのですが KTB 02/9/26(木) 19:15 ┗Re:i=10000になる前にエラーで止まってしまうのですが カド 02/9/26(木) 19:17 ┗Re:i=10000になる前にエラーで止まってしまうのですが よろずや 02/9/27(金) 0:01 ┗Re:i=10000になる前にエラーで止まってしまうのですが カド 02/9/27(金) 12:40 ─────────────────────────────────────── ■題名 : i=10000になる前にエラーで止まってしまうのですが ■名前 : カド ■日付 : 02/9/26(木) 19:10 -------------------------------------------------------------------------
教えてください。 i=10000になる前にエラーで止まってしまうのですが、 どうしてですか? Sub nn() Dim i As Integer Dim intPercent As Long For i = 1 To 10000 'ループ回数 intPercent = Int(i * 100 / 10000)←エラーで止まる Range("a1") = i Next i End Sub |
カドさん > intPercent = Int(i * 100 / 10000)←エラーで止まる intPercent = Int(i * 100& / 10000) 試してみてね。 |
▼KTB さん: ありがとうございます。 ものすごく早いレスポンスですね〜 すみません、理由と解説もお願いできませんか? |
>すみません、理由と解説もお願いできませんか? i * 100 の計算ですが、 i も 100 も Integer ですね。 Integer型同士の計算では、計算結果もInteger型になります。 で、実際に計算してみると、Integer型の最大値である32767を超えてしまいますよね。 で、オーバーフローというエラーになります。 どちらかをLong型にすれば、計算結果もLong型になります。 ・・・Long型の最大値は、2,147,483,647 です。 で、手っ取り早いのは、100をLong型にする方法です。 &を付けると、Long型になります。 他には、 Dim i As Long と定義する方法。 CLng(i) * 100 としてLong型に変換する方法。 i * CLng(100) とする方法。 しかし、 CLng(i * 100) ではダメです。 オーバーフローしちゃってから変換しても手遅れ。 |
▼よろずや さん: >i * 100 の計算ですが、 i も 100 も Integer ですね。 >Integer型同士の計算では、計算結果もInteger型になります。 >で、実際に計算してみると、Integer型の最大値である32767を超えてしまいますよね。 >で、オーバーフローというエラーになります。 回答ありがとうございます。 これまで、それなりにプログラムを作ってきましたが、今まで一度もこんな場面に出会ったことがなく、iはともかく、i * 100 が32767を超えてはいけないとはまったく知りませんでした。 これからもよろしくおねがいします〜 |