簡體   English   中英

在VBA上的小數點上運行循環步驟被卡住

[英]run loop step on decimal on vba get stuck

這是我的代碼來解決vba上的利率,但是循環將運行到死!

請幫助我找到代碼上的問題!

非常感謝你!!!

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和謎!

修改后,下面的代碼效果很好!

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

由於在類型轉換后將r聲明為Long ,因此循環將變為:

For r = 0 To 0.08 Step 0.001
    'code
Next r

但分配當r = 0.05 ,實際值r將是0r=0+0.001會給你0為好。 由於r從不增加,因此會產生無限循環。

順便說一句 ,由於您使用double值進行操作,為了正確起見,您還應該將另一個值也從Long類型更改為Double

Long vs Double在其他地方已經被提及。
接下來的事情是在循環中的某個地方添加DoEvents。 這樣就可以中斷腳本的執行,也可以使Excel響應(更好)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM