Herbers Excel-Forum - das Archiv

Fakultät in VBA

Bild

Betrifft: Fakultät in VBA
von: Ptonka

Geschrieben am: 21.12.2006 11:12:02
Hallo zusammen,
ich möchte per VBA von einer Zahl die Fakultät berechnen. Welche Syntax muss ich hierfür benutzen?
Also z.B. Wert = Fakultät(Zahl)
Für einen Tipp wäre ich sehr dankbar.
Gruß,
Ptonka
Bild

Betrifft: AW: Fakultät in VBA
von: Andi
Geschrieben am: 21.12.2006 11:36:19
Hi,
das geht so:
Sub t()
Dim zahl
zahl = 5
MsgBox Application.WorksheetFunction.Fact(zahl)
End Sub

Schönen Gruß,
Andi
Bild

Betrifft: AW: Fakultät in VBA
von: EtoPHG

Geschrieben am: 21.12.2006 11:40:06
Hallo Ptonka,
Gibts nicht...
Musste selber schreiben, z.B. so (geht mit Zahlen bis 170):
Public
Function Factorial(iNumber As Integer) As Double
Select Case iNumber
Case 2 To 170
Factorial = iNumber * Factorial(iNumber - 1)
Case 0, 1
Factorial = 1
Case Else
Factorial = Null
End Select
End Function

Gruss Hansueli
Bild

Betrifft: AW: Fakultät in VBA
von: ptonka

Geschrieben am: 21.12.2006 11:45:36
Hallo Hansueli,
es geht doch, siehe Antwort von Andi.
Ich hatte es schon ähnlich ausprobiert, aber anstatt
Application.WorksheetFunction.Fact(Zahl)
nur
WorksheetFunction.Fact(Zahl)
geschrieben und das funktionierte nicht.
Also Andi - vielen Dank für den entscheidenden Hinweis.
Gruß,
Ptonka
Bild

Betrifft: AW: Fakultät in VBA
von: EtoPHG
Geschrieben am: 21.12.2006 11:49:43
Hallo Ptonka,
Andi benutzt eine Worksheet-Function, meins ist reines VBA.
Vergleich mal Andi's Routine mit meiner, mit der Zahl 200 !
Geht's noch ?
Gruss Hansueli
Bild

Betrifft: AW: Fakultät in VBA
von: Andi
Geschrieben am: 21.12.2006 12:00:05
Hi,
nö, geht nimmer, Deine aber auch nicht... ;-)
Bei mir erzeugen Deine Variante und die WorksheetFunction bis 170 das gleiche Resultat, aber 171 gehn beide nimmer.
Schönen Gruß,
Andi
Bild

Betrifft: Das war auch zu erwarten, weil die Zahl zu groß...
von: Luc:-?

Geschrieben am: 21.12.2006 12:54:50
...wird, Andi & Hansueli,
aber da gibt es einen Trick (irgendwann nächtes Jahr auf meiner Website, habe jetzt leider keine Zeit das rauszusuchen), evtl mal recherchieren.
Gruß + mXm Luc :-?
 Bild