次のプログラムを実行していて、プログラムがa
になると最初の繰り返しでオーバーフローエラーが発生します。私が理解しているように、これは、容量がばかげているDoublesとLongを使用しているために起こるべきではありませんが、現時点では最大100にすぎないので、これは問題ではないはずです。ここに私のオリジナルの入力です:実行時エラー6 vbaでオーバーフローしてExcel用
h0 = 1000, v0 = 0, a0 = g = -9.80665, dt = .01, m = 752.2528, b = .287875
を、ここのコードです:これは簡単な修正です
Sub drag()
Dim h0 As Double
Dim v0 As Double
Dim a0 As Double
Dim dt As Double
Dim m As Double
Dim b As Double
Dim g As Double
Dim i As Long
Dim h As Double
Dim v As Double
Dim a As Double
h0 = Worksheets("Drag").Cells(2, 8).Value
v0 = Worksheets("Drag").Cells(2, 9).Value
a0 = Worksheets("Drag").Cells(2, 10).Value
g = Worksheets("Drag").Cells(2, 10).Value
dt = Worksheets("Drag").Cells(2, 7).Value
m = Worksheets("Drag").Cells(2, 4).Value
b = Worksheets("Drag").Cells(2, 5).Value
Debug.Print h0 & v0 & a0 & dt & m & b
For i = 1 To 100
v = v0 + a0 * dt
h = 0.5 * a0 * (dt^2) + v0 * dt + h0
a = m * g - b * (v^2) 'Line where overflow occurs
v0 = v
h0 = h
a0 = a
Cells(i + 2, 8) = h0
Cells(i + 2, 9) = v0
Cells(i + 2, 10) = a0
Next i
Debug.Print h0 & v0 & a0 & dt & m & b
End Sub
希望。
'i = 14'(ループを14回通過)と' v = -1.689 x 10^209'のときにオーバーフローが発生します。あなたがしようとしていることは分かりませんが、「v」が爆発しています。あなたが何をしようとしているのかを記述すれば、助けになります。 –
@ジョンコールマン私は今問題を見る、私はドラッグの方程式をやっているし、私はm、感謝の言葉で分けることを忘れていた。 – Anthrochange
FWIW **は計算条件や数式を説明するコメントのための** **募集です**。または意味のある識別子。または両方。 –