作者fumizuki (蒙面加菲狮)
看板Visual_Basic
标题Re: [VBA ] 发生"溢位"问题
时间Fri Apr 27 19:29:36 2007
※ 引述《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