Einfache Funktion in VB für Excel 2007

Hallo!

Ich möchte in Excel 2007 mit einer einfachen if-Abfrage auf den Wert einer Zelle 2 verschiedenen Formeln anwenden. Dazu habe ich eine Funktion geschrieben, die folgendermaßen aussieht:

Function Fkt1(x As Single) As Single

If x = 300 Then
MsgBox „Wert liegt ausserhalb des zulaessigen Bereichs“
End If

If x 10 Then
Fkt1 = -0.0837 * x ^ 2 + 213.79 * x + 3311.7
End If

End Function

Schließlich würde ich in eine Zelle „=Fkt1(A1)“ schreiben. Bei einem Kollegen funktioniert das auch, nur auf meinem PC nicht. Kann das entweder an der Excel Version oder vielleicht an Win 7 liegen? Die einzigen Einstellungen, die ich verändert habe sind die Makrosicherheit auf Minimum und „Zugriff auf das VBA-Projektobjektmodell vertrauen“ angekreuzt.

Wäre für jede Hilfe dankbar!

Gruß
Chris

Hi Christian,

was genau passiert, wenn es nicht funktioniert: kommt kein Ergebnis, ein nicht erwartetes Ergebnis oder eine Excel-Fehlermeldung?

Gruß
M.

Stimmt das hätte ich wohl noch schreiben sollen… Es kommt ein #BEZUG - Fehler.

Schließlich würde ich in eine Zelle „=Fkt1(A1)“ schreiben. Bei
einem Kollegen funktioniert das auch, nur auf meinem PC nicht.
Kann das entweder an der Excel Version oder vielleicht an Win
7 liegen? Die einzigen Einstellungen, die ich verändert habe
sind die Makrosicherheit auf Minimum und „Zugriff auf das
VBA-Projektobjektmodell vertrauen“ angekreuzt.

Hallo Chris,

unklar, mit welchem Excel auf welchem BS (betriebssytem) klappt es, mit welchem Excel auf welchem BS klappt es nicht?

Makrosicherheit würde ich nie auf Minimum stellen, auf „Mittel“.

Deine Fkt rechnet einen Wert aus auch wenn die MsgBox kam.

Probiere mal nachfolgenden Code.

Gruß
Reinhard

Function Fkt1(Zelle As Range) As Single
Dim x As Single
x = Zelle.Value
If x = 300 Then
 MsgBox "Wert liegt ausserhalb des zulaessigen Bereichs"
 Exit Function
End If
If x 10 Then
 Fkt1 = -0.0837 \* x ^ 2 + 213.79 \* x + 3311.7
End If
End Function

Hallo Chris,

unklar, mit welchem Excel auf welchem BS (betriebssytem)
klappt es, mit welchem Excel auf welchem BS klappt es nicht?

Makrosicherheit würde ich nie auf Minimum stellen, auf
„Mittel“.

Deine Fkt rechnet einen Wert aus auch wenn die MsgBox kam.

Probiere mal nachfolgenden Code.

Gruß
Reinhard

Function Fkt1(Zelle As Range) As Single
Dim x As Single
x = Zelle.Value
If x = 300 Then
MsgBox „Wert liegt ausserhalb des zulaessigen Bereichs“
Exit Function
End If
If x 10 Then
Fkt1 = -0.0837 * x ^ 2 + 213.79 * x + 3311.7
End If
End Function

Also, es klappt bei meinem Kollegen auf Windows Vista, Excel 2003. Bei mir mit Windows 7 mit Excel 7 bekomme ich weiterhin einen „#BEZUG-Fehler“. Es erscheint nichtmal die msgbox wenn ich Werte über 300 in die Zelle eingebe…

Da es bei meinem Kollegen funktioniert denke ich auch nicht, dass der Fehler im Code liegt, sondern eher in anderen Einstellungen z.B. von Excel selbst.

Gruß
Chris

Ok, jetzt funktioniert alles… ich weiß zwar nicht genau was das Problem war, aber wenn ich die Funktion nicht „Fkt1“, sondern z.B. „Abfrage“ nenne klappt alles einwandfrei. Darauf muss man erstmal kommen…

Danke für die Antworten und Mühe Leute :smile:

Gruß Chris

2007 ‚#bezug!‘-bei Funktionsnamen ‚Fkt1‘, ‚Fkt2‘

das Problem war, aber wenn ich die Funktion nicht „Fkt1“,
sondern z.B. „Abfrage“ nenne klappt alles einwandfrei. Darauf
muss man erstmal kommen…

Hallo Chris,

dankeschön für die Information.

Ich habe es jetzt auch in Excel2007 getestet, alles so wie du es sagst.
Übrigens kommt der Fehler auch beim Namen „Fkt2“.

Gruß
Reinhard

Ok, jetzt funktioniert alles… ich weiß zwar nicht genau was
das Problem war, aber wenn ich die Funktion nicht „Fkt1“,
sondern z.B. „Abfrage“ nenne klappt alles einwandfrei. Darauf
muss man erstmal kommen…

Hallo Chris,

Problem gelöst (naja, nicht durch mich *gg*), für Excel2007 ist FKT1 eine Zellenbezeichnung.

Gruß
Reinhard