在vba上运行十进制循环步骤卡住了
这是我的代码来解决vba的利率,但循环将运行到死亡!
请帮我find代码上的问题是什么!
非常感谢你!!!
Sub rate() Dim r As Long Dim y As Long Dim term0 As Long Dim term1 As Long Dim term2 As Long Dim term3 As Long Dim term4 As Long For r = 0.05 To 0.08 Step 0.001 term0 = 10000 term1 = 14000 / (1 + r) term2 = 18000 / (1 + r) ^ 2 term3 = 22000 / (1 + r) ^ 3 term4 = 25000 / (1 + r) ^ 4 y = term0 + term1 + term2 + term3 + term4 If y <= 75000 Then MsgBox (r) End If Next r End Sub
谢谢simoco和Enigmativity!
修改后,这里是伟大的代码!
Sub rate() Dim r As Double Dim y As Long Dim term0, term1, term2, term3, term4 As Long r = 0.06 Do r = r + 0.00001 term0 = 10000 term1 = 14000 / (1 + r) term2 = 18000 / (1 + r) ^ 2 term3 = 22000 / (1 + r) ^ 3 term4 = 25000 / (1 + r) ^ 4 y = term0 + term1 + term2 + term3 + term4 Loop Until y <= 75000 Cells(11, 11) = r Cells(14, 12) = term0 Cells(15, 12) = term1 Cells(16, 12) = term2 Cells(17, 12) = term3 Cells(18, 12) = term4 Cells(20, 12) = y End Sub
更改
Dim r As Long
至
Dim r As Double
由于在types转换之后将r
声明为Long
,您的循环将变为:
For r = 0 To 0.08 Step 0.001 'code Next r
但是当分配r = 0.05
, r = 0.05
实际值是0
, r=0+0.001
也会给你0
。 而且由于r
不会增加,所以会产生无限循环。
顺便说一句 ,既然你使用double值进行操作,为了正确,你还应该将Long
types的另一个值更改为Double
龙与双已经在其他地方提到过。
接下来是在循环的某个地方添加DoEvents。 这使得破解脚本执行成为可能,同时也使Excel响应(更好一点)。