2016-09-05 16 views
0

whileループを使用して階乗を計算するために、オープンオフィスのマクロコードを作成しようとしていますが、難しいと感じています。これまでのところ、私のコードです。どんな助けでも喜んで感謝します。FactorialマクロWhileループ

Sub DisplayFact() 
    Dim n As Long 
    Dim nFact As Long 

    'Initialsing n to zero 
    if n = 0 
     return nFact = 0 ; 

    While n <= 4 

     MsgBox "n = " & n & " , nFact = " & nFact 

     n = n + 1 
     nFact= n*nFact(n-1) 
    Wend 

End Sub 
+0

あなたは、コードの以前のバージョンを持っていますか? 'Sub'は' Function'ではなく、 'return'はVBAでは無効です – Slai

+0

***ソフトウェアのように"オープンオフィス "ですか?OpenOffice? – Comintern

+0

OppenOfficeで利用できるかどうかは不明ですが、['Fact'](https://support.office.com/en-us/article/FACT-function-ca8588c2-15f2-41c0-8e8c-c11bd471a4f3 Excel関数 – Slai

答えて

0
Sub DisplayFact() 

    Dim n As Long 

    n = 0 'Initialsing n to zero 

    While n <= 4 
     MsgBox "n = " & n & ", Fact = " & WorksheetFunction.Fact(n) 
     n = n + 1 
    Wend 

End Sub 

または多分:

Do 
. 
. 
Loop While n <= 4 

または

Do While n <= 4 
. 
. 
. 
Loop 
0

あなたはこの種のもののためにFor..Toループを使用する必要があります。

For n = 0 To 4 
    MsgBox "n = " & n & " , nFact = " & nFact 
    nFact= n * nFact(n - 1) 
Next 

このループは、0の値を持つnで始まり、各繰り返しで自動的にnの値を1ずつ増やします。

また、オプションのStepパラメータを使用して増分を変更することができます。

For n = 1 To 10 Step 2 
    '// n will go through 1 > 3 > 5 > 7 > 9 and then exit 
Next 

For n = 10 To 1 Step - 3 
    '// n will go through 10 > 7 > 4 > 1 and then exit 
Next 
+1

'nFact'は実際にOPのコードの配列ではありません。 – Comintern

+1

実際には@Cominternはもう一度見て、私はOPコードのいずれかが意味をなさないと思います.... –

+1

nFactが関数だった反復バージョンでOPが開始されているように見えて、それを反復的に変更しようとしました – Slai