ich habe eine Funktion geschrieben, die über das Arbeitsblatt aufgerufen werden soll. Ziel soll es sein, dass Werte, die in dem Tabellenblatt stehen in die Funktion übergeben werden. Leider erhalte ich "#WERT!" als Rückgabewert und nicht das von mir gewünschte Ergebnis. Rufe ich die Funktion hingegen über ein Test-Sub auf, erhalte ich beim Debuggen das Ergebnis.
Vielleicht kann mir ja jemand weiterhelfen.
Vielen Dank :-)
Sub Test()
Dim c As Variant
Dim d As Variant
c = Sheets("Unit Root").Range("A2:A21").Value
d = Sheets("Unit Root").Range("L30:AE30").Value
t = DF(d)
End Sub
Public Function DF(Data As Variant)
Dim x As Variant
Dim y As Variant
Zeilen = UBound(Data, 1)
Spalten = UBound(Data, 2)
If Zeilen > 1 And Spalten > 1 Then
MsgBox ("Eingabebereich enthält mehr als eine Zeitreihe. Bitte auf eine Zeitreihe begrenzen. _
")
Exit Function
ElseIf Zeilen = 1 And Spalten > 1 Then
n = Spalten - 2
ReDim x(1 To 2, 1 To n)
ReDim y(1 To 1, 1 To n)
For i = 1 To n
y(1, i) = Data(1, i + 2) - Data(1, i + 1)
x(1, i) = Data(1, i + 1)
x(2, i) = Data(1, i + 1) - Data(1, i)
Next i
ElseIf Zeilen > 1 And Spalten = 1 Then
n = Zeilen - 2
ReDim x(1 To 2, 1 To n)
ReDim y(1 To 1, 1 To n)
For i = 1 To n
y(1, i) = Data(i + 2, 1) - Data(i + 1, 1)
x(1, i) = Data(i + 1, 1)
x(2, i) = Data(i + 1, 1) - Data(i, 1)
Next i
End If
Reg = WorksheetFunction.LinEst(y, x, True, True)
std = (Reg(1, 2) / Reg(2, 2))
DF = std
End Function