ich habe eine Function geschrieben (mit Function name()as Double eröffnet und mit End Function geschlossen). Doch beim Ausführen kommt die Fehlermeldung: Function oder Sub nicht definiert!
Weiß jemand woran das liegt??
Vielen Dank
Conny
kann es sein, dass Du das Teil in einem Klassen-, nicht einem Standardmodul abgelegt hast?
hans
hans
warum postest Du nicht mal den Code und den Aufruf der Function ?
Gruß Otto
Function EigeneFunktion() As Double
b = ActiveCell.Row
If (b >= 16 And b <= 116) Then
xWert = Range("A" & (b - 50) & ":A" & (b + 50))
yWert = Range("B" & (b - 50) & ":B" & (b + 50))
If (b >= 41 And b <= 91) Then
xWert = Range("A" & (b - 25) & ":A" & (b + 25))
yWert = Range("B" & (b - 25) & ":B" & (b + 25))
If (b >= 54 And b <= 78) Then
xWert = Range("A" & (b - 12) & ":A" & (b + 12))
yWert = Range("B" & (b - 12) & ":B" & (b + 12))
If (b >= 60 And b <= 72) Then
xWert = Range("A" & (b - 6) & ":A" & (b + 6))
yWert = Range("B" & (b - 6) & ":B" & (b + 6))
If (b >= 63 And b <= 69) Then
xWert = Range("A" & (b - 3) & ":A" & (b + 3))
yWert = Range("B" & (b - 3) & ":B" & (b + 3))
If (b >= 65 And b <= 67) Then
xWert = Range("A" & (b - 1) & ":A" & (b + 1))
yWert = Range("B" & (b - 1) & ":B" & (b + 1))
Steigung = WorksheetFunction.Slope(yWert, xWert)
Glättung = Worksheets(1).Cells(1, 1).Value
Ergebnis = Abs(Steigung)
If Ergebnis < 16 Then
If Ergebnis < 32 Then Ergebnis = Abs(Steigung)
Else: Ergebnis = Steigung
End If
End If
rng.Value = Round(rng.Value * 1.95583, 6)
EigeneFunktion = Ergebnis
End Function
in einer Zelle in Excel ruf ich dann "=EigeneFunktion()" auf
auf den ersten Blick:
Das liegt an dem Round. Das ist kein VBA-Befehl, sondern eine WorksheetFunction.
Es muss so heißen:
rng.Value = WorksheetFunction.Round(rng.Value * 1.95583, 6)
Aber auch danach dürft der Code nicht laufen. Und musst die ganzen Ifs noch schließen.
Gruß
Jürgen
1. arbeite mit Dim um die Variablen bestimmen
2. Es fehlen einige "End IF"
Starte mal den Debug und probiere es
Gruß Otto
Hier der Code:
If b >= 66 And Abs(Steigung1) < Glättung Then
Ergebnis = Abs(Steigung1)
ElseIf b >= 41 And Abs(Steigung2) < 2 * Glättung Then
Ergebnis = Abs(Steigung2)
ElseIf b >= 54 And Abs(Steigung3) < 4 * Glättung Then
Ergebnis = Abs(Steigung3)
ElseIf b >= 60 And Abs(Steigung4) < 8 * Glättung Then
Ergebnis = Abs(Steigung4)
ElseIf b >= 63 And Abs(Steigung5) < 16 * Glättung Then
Ergebnis = Abs(Steigung5)
ElseIf b >= 65 And Abs(Steigung6) < 32 * Glättung Then
Ergebnis = Abs(Steigung6)
Else: Ergebnis = Steigung
End If
End If
End If
End If
End If
End If
schließe doch nur meine zuvor geöffneten ifs!?
riskier mal einen blick in die hilfe zu If und ElseIf.
Gruß
Jürgen