※ 引述《tnt0619 ()》之銘言:
: 請問一下,
: 當我單獨執行 function pvpv的時候,輸入變數可以得到結果;
: 但當我利用sub中呼叫function的時候,
: 就會在以下程式碼中的
: j = j + Round(CF / ((1 + r) ^ i), 2)
: 出現錯誤訊息,"溢位"
: 是不是我的sub觀念弄錯了,請高手指正,謝謝.
: -------------------------------------------------------------------
: Sub countpv()
: CF = InputBox("enter the cash flow value", "pv calc", "100")
: Worksheets("sheet1").Cells(2, 2) = CF
: r = InputBox("enter the interest rate", "pv calc", "0.01")
: Worksheets("sheet1").Cells(3, 2) = r
: n = InputBox("cash flow entered:" & CF & Chr(10) & _
: "interest rate entered " & FormatPercent(r, "2") & Chr(10) & _
: "enter the number of periods : ", "pv calc", "10")
: Worksheets("sheet1").Cells(4, 2) = n
: Call pvpv(CF, r, n)
: End Sub
請明確宣告每一個變數的型態,減少錯誤的發生率
: -------------------------------------------------------------------
: Function pvpv(CF, r, n) As Double
Function pvpv(ByVal CF As Double, ByVal r As Double, _
ByVal n As Double) As Double
On Error Goto ErrHandle
: Dim i, j As Double
Dim i As Double, j As Double
: i = 1
: j = 0
: Do While i <= n
: j = j + Round(CF / ((1 + r) ^ i), 2)
: i = i + 1
: Loop
: pvpv = j
: MsgBox "the pv is :" & pvpv, vbOKOnly, "pv calc"
: Worksheets("sheet1").Cells(5, 2) = pvpv
Exit Function
ErrHandle:
Debug.Print CF, r, i '當發生錯誤把當時變數的值列出來
MsgBox Err.Description '你可以在這裡按F9設中斷點,以便做debug的動作
: End Function
: ---------------------------------------------------------------------
按 Ctrl+G 可以顯示即時運算視窗,Debug.Print 會將值輸出到這個視窗中,
你亦可在這個視窗中下達任何運算式(宣告變數除外)
在即時運算視窗中,
「?」就等於「Debug.Print」,亦可用「Print」來列出你想要的資料
--
▃▅▇▆▄ ▆▂▃ `
逝去感情如何能留住,半點癡情遺留殊不易,██▅▇▄▃ ▇▃▂" .
█████████▃i ▁▄▇
更多悽悽慘慘的遭遇…………██▆▃ █▅▆▃ˍ▄*
◢ ▂█▄▇▅▂▌.
我不知道,王~八~蛋~~! ▂▆███ █▄▃ 。fumizuki。Check。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.224.174