第13週WORD巨集+表單+TypeText+TypeParagraph+字串
Const period As Integer = 4 Const maxerror As Double = 0.0000001 Dim payment(period) As Double '廣域變數 4 維度的陣列 Private Sub CommandButton1_Click() Dim a, b, c, f, gap As Double Dim loopNumber As Integer a = 0 b = 1 gap = 10 loopNumber = 10 payment(0) = TextBox1.Value payment(1) = TextBox2.Value payment(2) = TextBox3.Value payment(3) = TextBox4.Value f = npv(a) If f = 0 Then Label9.Caption = 0 ElseIf f < 0 Then Label9.Caption = "內部報酬率小於 0." Else Do While gap > mexerror And Abs(f) > maxerror And loopNumber < 100 loopNumber = loopNumber + 1 c = (a + b) / 2 f = npv(c) If Abs(f) > maxerror And gap > maxerror Then If f > 0 Then a = c Else b = c gap = b - a End If Else Label9.Caption = c * 100 End If Loop End If Label10.Caption = f Label11.Caption = loopNumber '以下是將結果輸出到 WORD 文件 Selection.TypeText ("躉繳" & TextBox1.Value & "第1期:" & TextBox2.Value & "第2期:" & TextBox3.Value & "第3期:" & TextBox4.Value) Selection.TypeParagraph Selection.TypeText ("內部報酬率%:" & c * 100) Selection.TypeParagraph Selection.TypeText ("淨現值:" & f) Selection.TypeParagraph Selection.TypeText ("迴圈次數:" & loopNumber) Selection.TypeParagraph End Sub Private Sub CommandButton2_Click() End End Sub Function npv(rate) '計算特定折現率rate的淨現值 Dim y As Double Dim j As Integer y = -payment(0) For j = 1 To period y = y + payment(j) / (1 + rate) ^ j Next npv = y End Function
留言
張貼留言