Hi,
mit der Mathematik wirst Du mir helfen müssen, in Statistik bin ich nicht mehr so fit.
Public Function xharm(ParamArray x()) As Double
Du hast Paramarray falsch verwendet. Aus der Hilfe:
Function Summe(ByVal Arg1 As Integer, ParamArray AndereArg())
Dim Ergebnis
' Beim Aufruf der Funktion mit:
Ergebnis = Summe(4, 3 ,2 ,1)
' erhalten die lokalen Variablen die folgenden Werte: Arg1 = 4,
' AndereArg(1) = 3, AndereArg(2) = 2 usw., sofern die
' Untergrenze für Datenfeldindizes 1 ist.
Dim i As Integer
n = InputBox(„Wieviele Zahlen sollen eingegeben werden“,
„Anzahl der Zahlen“)
In der Funktion? Das würde ich in die Prozedur schreiben und an die Funktion übergeben
For i = 1 To n
xharm = n / (1 / x(i))
xharm wird hier n mal überschrieben, immer wieder neu gesetzt.
Das kann ich mir einfach nicht vorstellen, daß das richtig ist.
Next
Debug.Print xharm
End Function
Public Sub xharm_haupt()
Dim n As Integer
Call xharm(x)
Du dimensionierst n, gibst weder n noch x einen Wert und übergibst die nicht dimensionierte Variable x? Das wird sich VB nicht gefallen lassen.
End Sub
Ein Code, der erst mal läuft, aber vermutlich nicht das macht, was Du möchtest, was ich aber bisher verstanden habe, würde so aussehen:
Option Explicit
Private Sub Command1\_Click()
Dim n As Integer
Dim x() As Integer
Dim i As Integer
n = InputBox("Bitte Anzahl eingeben")
ReDim x(1 To n)
For i = 1 To n
x(i) = InputBox("bitte Wert " + CStr(i) + " eingeben")
Next
Me.Caption = xharm(n, x)
End Sub
Private Function xharm(ByVal n As Integer, ByRef x() As Integer) As Double
Dim i As Integer
For i = 1 To n
xharm = n / (1 / x(i))
Next
End Function
Die Schleife in der Funktion kann so eigentlich kaum richtig sein, ich weiß aber nicht, wie sie richtig aussehen muss.
Gruß, Rainer