看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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