在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.05r = 0.05实际值是0r=0+0.001也会给你0 。 而且由于r不会增加,所以会产生无限循环。

顺便说一句 ,既然你使用double值进行操作,为了正确,你还应该将Longtypes的另一个值更改为Double

龙与双已经在其他地方提到过。
接下来是在循环的某个地方添加DoEvents。 这使得破解脚本执行成为可能,同时也使Excel响应(更好一点)。