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

Forumthread: [VBA] Funktion nicht ausführbar?

[VBA] Funktion nicht ausführbar?
23.03.2020 10:06:23
Nils
Hallo,
ich habe eine Verständnisfrage, warum kann ich diese Funktion nicht ausführen?
Die Funktion ist in einem Modul mit 'Option Explicit', andere Funktionen im gleichen Modul kann ich ausführen (F5) nur diese eben nicht. Die Funktion funktioniert und kann in anderen Subs verwendet werden, aber warum kann man sie nicht direkt ausführen?
Wenn mir das jemand erklären kann, wäre ich sehr dankbar.
Nils

Public Function SHEETNAME(Optional intNumber As Integer) As String
' Function to output the name of the worksheet
Application.Volatile
If intNumber  ActiveWorkbook.Worksheets.Count Then
SHEETNAME = "-"
ElseIf intNumber = 0 Then
SHEETNAME = ActiveWorkbook.ActiveSheet.Name
Else
SHEETNAME = ActiveWorkbook.Sheets(intNumber).Name
End If
End Function

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: [VBA] Funktion nicht ausführbar?
23.03.2020 10:23:41
Matthias
Moin!
Das liegt an dem Parameter, den die Funktion benötigt. Im Kopf der Funktion steht hinter dem Funktionsnamen etwas - die Klammer ist nicht leer. Das hier der Wert Optional ist, spielt da keine Rolle. Beim Manuellen Aufruf erkennt das VBA und macht nix. Bei einem Aufruf wird das intern übergeben, dass da nix ist und der Code läuft durch. Vereinfacht gesagt.
Manuelle kannst du also nur Funktionen ohne Parameter aufrufen.
VG
Anzeige
AW: [VBA] Funktion nicht ausführbar?
23.03.2020 10:31:22
Nils
Moin Matthias,
super, vielen Dank für die Erklärung! Wieder was dazu gelernt!
In dem Zusammenhang, wie geht man beim entwickeln solcher Funktionen vor?
Ich teste gerne durch zeilenweises durchlaufen der Prozedur, das geht bei einer solchen Funktion leider nicht. Zum testen habe ich mir eine Hilfsprozedur gebastelt, die die Funktion aufruft, aber irgendwie umständlich...
Nils
Anzeige
AW: [VBA] Funktion nicht ausführbar?
23.03.2020 10:53:43
Matthias
Moin!
Bei Funktionen und

Sub mit Parameter geht es nicht anders. Der Compiler führt den Code nicht aus (weder  _
Einzelschritt noch F5. Was kann man machen.
1. Eine Aufruf

Sub basteln. SInd auch nur 3 ZEilen COde. Pozedurkopf, der Aufruf und End Sub
.
Dort startest du dann deinen Code und gehst mit F8 weiter. Vorteil ist, du kannst auch gleich testen, wie der Parameter ggf. ankommt.
oder
2. Nimm die Parameter aus dem Kopf raus. Damit kannst du dann wieder durchgehen. Dann gleich am Anfang der Funktion die alten Paramter festlegen bzw. zuweisen.
Mehr fällt mir nicht ein.
Ich würde aber Variante 1 nutzen. Wie gesagt, es sind nur 3 Zeilen und ein davon ist eh der Aufruf. DAmit kannst du daber gleich die Funktionalität prüfen.
VG
Anzeige
AW: [VBA] Funktion nicht ausführbar?
23.03.2020 13:26:43
Nils
Hi Matthias,
Ja, Variante 1 nutze ich genau so wie von dir beschrieben.
ok, dann weiß ich bescheid!
Danke vielmals!
Nils
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA-Funktion aufrufen: Tipps und Tricks


Schritt-für-Schritt-Anleitung

  1. Funktion erstellen: Erstelle deine eigene Funktion im VBA-Editor. Achte darauf, dass du die Option Explicit-Anweisung verwendest, um Variablen klar zu deklarieren.

    Public Function SHEETNAME(Optional intNumber As Integer) As String
       Application.Volatile
       If intNumber >= ActiveWorkbook.Worksheets.Count Then
           SHEETNAME = "-"
       ElseIf intNumber = 0 Then
           SHEETNAME = ActiveWorkbook.ActiveSheet.Name
       Else
           SHEETNAME = ActiveWorkbook.Sheets(intNumber).Name
       End If
    End Function
  2. Funktion aufrufen: Du kannst die Funktion in einem anderen VBA-Sub aufrufen, um sie zu testen. Direktes Ausführen über F5 ist bei Funktionen mit Parametern nicht möglich.

  3. Hilfsprozedur erstellen: Wenn du die Funktion testen möchtest, erstelle eine Hilfsprozedur:

    Sub TestSHEETNAME()
       MsgBox SHEETNAME(1) ' Beispielaufruf mit Parameter
    End Sub
  4. Durchlaufen der Prozedur: Verwende F8 im VBA-Editor, um die Prozedur schrittweise zu durchlaufen und die Funktionsweise zu überprüfen.


Häufige Fehler und Lösungen

  • Funktion nicht ausführbar: Wenn du versuchst, eine Funktion mit Parametern direkt auszuführen, wird dies nicht funktionieren. Der Fehler liegt darin, dass VBA keine Parameter bei einem direkten Funktionsaufruf akzeptiert.

  • Lösung: Erstelle eine Hilfsprozedur, wie oben beschrieben, um die Funktion zu testen.

  • Parameterproblem: Wenn der Parameter nicht korrekt übergeben wird, wird die Funktion möglicherweise nicht wie erwartet ausgeführt. Achte darauf, dass der Datentyp des Parameters korrekt ist.


Alternative Methoden

  • Funktion ohne Parameter: Wenn du eine Funktion ohne Parameter erstellst, kannst du sie direkt über F5 aufrufen. Dies ist eine schnelle Methode, um einfache Berechnungen durchzuführen.

  • VBA-Funktion mit Parameter aufrufen: Nutze eine Hilfsprozedur, um deine excel vba eigene funktion flexibel zu testen.


Praktische Beispiele

  1. Basisfunktion:

    Public Function AddNumbers(a As Integer, b As Integer) As Integer
       AddNumbers = a + b
    End Function

    Aufruf in einer Hilfsprozedur:

    Sub TestAddNumbers()
       MsgBox AddNumbers(5, 10)
    End Sub
  2. SHEETNAME verwenden: Verwende die Funktion SHEETNAME in einer Prozedur, um den Namen eines bestimmten Arbeitsblatts anzuzeigen:

    Sub ShowSheetName()
       MsgBox SHEETNAME(2) ' Zeigt den Namen des 2. Arbeitsblatts an
    End Sub

Tipps für Profis

  • Debugging: Nutze den Debugger, um den Code schrittweise zu prüfen und Fehler schnell zu identifizieren.

  • Modularität: Halte deine Funktionen modular, damit du sie leicht wiederverwenden kannst. Weniger Abhängigkeiten machen das Testen einfacher.

  • Dokumentation: Kommentiere deinen Code gut, damit du und andere ihn später besser verstehen können.


FAQ: Häufige Fragen

1. Warum kann ich meine Funktion nicht direkt ausführen?
Funktionen mit Parametern können nicht direkt im VBA-Editor ausgeführt werden. Du musst sie in einer Sub-Prozedur aufrufen.

2. Wie kann ich Parameter in meiner Funktion testen?
Erstelle eine Hilfsprozedur, die die Funktion aufruft und die Parameter übergibt. Dies ermöglicht es dir, die Funktion zu testen und gleichzeitig zu debuggen.

3. Gibt es eine Möglichkeit, meine Funktion ohne Parameter zu testen?
Ja, du kannst eine Funktion ohne Parameter erstellen, um sie direkt über F5 im VBA-Editor auszuführen.

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