Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Function oder Sub nicht definiert?!

Forumthread: Function oder Sub nicht definiert?!

Function oder Sub nicht definiert?!
26.07.2002 08:10:05
Conny
Hallo,
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
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Function oder Sub nicht definiert?!
26.07.2002 08:15:21
Hans W. Herber
Hallo Conny,

kann es sein, dass Du das Teil in einem Klassen-, nicht einem Standardmodul abgelegt hast?

hans

Re: Function oder Sub nicht definiert?!
26.07.2002 08:22:17
Conny
hallo,
woran sehe ich das denn?..also ich hab es unter meiner tabelle in modul 2 als einzigen quelltext stehen.
Re: Function oder Sub nicht definiert?!
26.07.2002 08:30:17
Hans W. Herber
Wenn das Modul "Modul2" heißt und Du die Funktion nicht als Private deklariert hast, sehe ich keinen Grund, warum es nicht funktionieren sollte.
Als Möglichkeit: Gibt es eine zweite Funktion mit dem gleichen Namen? In diesem Fall lautet die irreführende Fehlermeldung, dass die Funktion nicht gefunden wird.

hans

Anzeige
Re: Function oder Sub nicht definiert?!
26.07.2002 08:37:35
Conny
also den namen gibt es garantiert nicht nochmal..kann es mir nicht erklären..sie ist auch nicht private??
Re: Function oder Sub nicht definiert?!
26.07.2002 08:57:29
Otto Ecker
Hallo Conny,

warum postest Du nicht mal den Code und den Aufruf der Function ?

Gruß Otto

Re: Function oder Sub nicht definiert?!
26.07.2002 09:08:51
Conny
Hallo,
dies ist der Code (ist allerdings noch nicht ganz fertig)

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

Anzeige
Re: Function oder Sub nicht definiert?!
26.07.2002 09:43:04
JürgenR
Hi Conny,

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

Anzeige
Re: Function oder Sub nicht definiert?!
26.07.2002 09:43:33
Otto Ecker
Hallo Conny,

1. arbeite mit Dim um die Variablen bestimmen
2. Es fehlen einige "End IF"

Starte mal den Debug und probiere es

Gruß Otto

Re: neuer Fehler bei If
26.07.2002 09:52:49
Conny
Hallo..
erstmal großen Dank für eure Hilfe..man lernt immer was dazu..Danke
nun ist die eine Fehlermeldung weg..schwups ist die nächste da: EndIf ohne If-Block!

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!?

Anzeige
Re: neuer Fehler bei If
26.07.2002 10:07:43
JürgenR
Hi Conny,

riskier mal einen blick in die hilfe zu If und ElseIf.

Gruß
Jürgen

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: Function oder Sub nicht definiert in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Überprüfe das Modul: Stelle sicher, dass deine Funktion oder Sub in einem Standardmodul und nicht in einem Klassenmodul abgelegt ist. Dies kann oft die Ursache für den Fehler "sub oder function nicht definiert" sein.

  2. Code überprüfen: Achte darauf, dass der Code korrekt ist. Hier ein einfaches Beispiel für eine Funktion:

    Function BeispielFunktion() As Double
       BeispielFunktion = 42
    End Function
  3. Richtige Deklaration: Stelle sicher, dass die Funktion nicht als Private deklariert ist, wenn du sie aus einem anderen Modul aufrufen möchtest.

  4. Variablen definieren: Nutze Dim, um Variablen in deinem Code zu deklarieren. Unzureichend definierte Variablen können ebenfalls zu einem Fehler beim Kompilieren führen.

  5. Debuggen: Starte den Debugger in Excel VBA, um den Code Zeile für Zeile durchzugehen. Dies hilft dir, Fehler schneller zu finden.


Häufige Fehler und Lösungen

  • Fehler: "Function oder Sub nicht definiert":

    • Überprüfe, ob die Funktion im richtigen Modul ist.
    • Stelle sicher, dass der Funktionsname nicht mit einem anderen Namen in Konflikt steht.
  • Fehler: "End If ohne If-Block":

    • Achte darauf, dass jeder If-Befehl ein entsprechendes End If hat. Nutze Einrückungen, um die Struktur klarer zu machen.
  • Fehler: "Fehler beim Kompilieren":

    • Überprüfe die Syntax und stelle sicher, dass alle Variablen korrekt deklariert sind.

Alternative Methoden

Wenn du beim Arbeiten mit Funktionen in Excel VBA auf Probleme stößt, gibt es alternative Ansätze:

  • Verwende Subs statt Functions: Manchmal kann es sinnvoll sein, eine Sub-Prozedur zu verwenden, wenn du keine Rückgabewerte benötigst. Beispiel:

    Sub BeispielSub()
       MsgBox "Hallo Welt"
    End Sub
  • Excel-Funktionen verwenden: In vielen Fällen kannst du auch eingebaute Excel-Funktionen direkt in den Zellen verwenden, ohne VBA zu nutzen.


Praktische Beispiele

Hier sind einige Beispiele, wie du Funktionen korrekt definierst und aufrufst:

  1. Einfache Funktion:

    Function AddiereZweiZahlen(a As Double, b As Double) As Double
       AddiereZweiZahlen = a + b
    End Function

    Aufruf in Excel: =AddiereZweiZahlen(5, 10)

  2. Funktion mit Fehlerbehandlung:

    Function SicherDividieren(a As Double, b As Double) As Variant
       If b = 0 Then
           SicherDividieren = "Fehler: Division durch Null"
       Else
           SicherDividieren = a / b
       End If
    End Function

    Aufruf in Excel: =SicherDividieren(10, 0)


Tipps für Profis

  • Verwende Option Explicit: Füge dies am Anfang deines Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert werden müssen. Dies hilft, Fehler zu vermeiden.

  • Strukturierte Programmierung: Halte deinen Code sauber und strukturiert, um die Lesbarkeit und Wartbarkeit zu verbessern.

  • Benennungskonventionen: Verwende klare und konsistente Namen für Funktionen und Variablen, um Klarheit zu schaffen.


FAQ: Häufige Fragen

1. Was bedeutet "sub oder function nicht definiert"? Diese Fehlermeldung tritt auf, wenn VBA die angegebene Funktion oder Sub nicht finden kann. Dies kann an einem falschen Modul oder einem Konflikt mit einem anderen Namen liegen.

2. Wie kann ich sicherstellen, dass meine Funktion funktioniert? Überprüfe, ob die Funktion im richtigen Modul ist, die Variablen deklariert sind und die Syntax korrekt ist. Nutze den Debugger, um Fehler zu finden.

3. Was sind die Unterschiede zwischen Sub und Function in VBA? Eine Function gibt einen Wert zurück, während eine Sub keine Rückgabewerte hat. Verwende Function, wenn du einen Wert benötigst, und Sub für Aktionen, die keinen Rückgabewert erfordern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige