Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sub Name ermitteln

Sub Name ermitteln
10.10.2003 20:35:20
Mike Müller
Hallo Zusammen,

ich möchte den Namen in einem aktiven Subroutine ermittel!

Wie kann ich das bewerkstelligen?

z.B.


Sub Musik()
msgbox "sub.name" ==>>> Ergebnis "Musik"
End Sub


Vielen Dank im voraus,

Gruss Mike
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ein Ansatz
10.10.2003 21:01:59
Reinhard
Hi Mike,
ich weiss jetzt nicht wie man bestimmte Module anspricht,
aber das aktive mit:
Gruß
Reinhard


Sub Anzeigen()
Anzahl = Application.VBE.ActiveCodePane.CodeModule.CountOfLines
'makro = Application.VBE.ActiveCodePane.CodeModule.Lines(1, Anzahl)
'modul = Application.VBE.ActiveCodePane.CodeModule.Parent.Name
'datei = ActiveWorkbook.Name
'MsgBox makro
'MsgBox modul
'MsgBox datei
Cells(1, 1) = Application.VBE.ActiveCodePane.CodeModule.Parent.Name
For n = 1 To Anzahl
Cells(n+1, 1) = Application.VBE.ActiveCodePane.CodeModule.Lines(n, 1)
Next n
End Sub

Anzeige
AW: Sub Name ermitteln
10.10.2003 22:19:54
mischa richter
ein problem bei vb6 oder vba ist, dass es keine globale fehlerbehandlung und auch keine sub/func-name-auslese-Anweisung gibt.
Musst evtl. alles selber manuell schreiben.

Mischa
AW: Sub Name ermitteln
10.10.2003 22:36:59
Hans W. Hofmann
Das dürfte systenbedingt garnet möglich sein,
sonst würde VBA auch Funtionen als Argunemte unterstützen.
Was ist denn der Hintergrund für dieses Ansinnen?

Gruß HW
Anzeige
AW: Sub Name ermitteln
10.10.2003 23:13:06
Mike Müller
Erst einmal vielen Dank für Eure Hilfe.

hmm - eigentlich geht es darum, dass es diverse Sub´s gibt. Einige von denen aktivieren einen Autofilter, indem der zusuchende Wert reingeschrieben wird. Das Ergebnis wird dann auf ein anderes Blatt kopiert. Sind aber keine Daten vorhanden, soll die Funktion abgebrochen werden. Welche Sub nun die Null zurückliefert, sollte mir eigentlich den Namen zurückgeben.

Sub MusikDVD()

Sheets("Auswertungen").Select
If Range("c14") = 0 Then
MsgBox "Kein(e) " & subname & " vorhanden!" 'z.B. Keine MusikDVD vorhanden!
Exit Sub
End If
usw...

Gruss Mike
Anzeige
AW: Sub Name ermitteln
10.10.2003 23:28:29
Hans W. Hofmann
Wieso gibt es VERSCHIEDENE Sub zum Filtern?
Es reicht doch eine allgemeingültige Sub, der man die steuernden Parameter
übergibt und dann hast Du auch sicher einen String dabei, die die Aufgabe
beschreibt und für die Msgbox verwendet werden kann.

Gruß HW
AW: Sub Name ermitteln
10.10.2003 23:40:43
Mike Müller
Hi,

in der Regel sind die Sub´s geringfügig anders aufgebaut. Ich schaue morgen mal nach, ob sich da was zusammenfassen lässt. Die VB - Geschicht würde mich trozdem interessieren!

Gruss Mike
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Sub Namen in VBA ermitteln


Schritt-für-Schritt-Anleitung

Um den Namen einer aktiven Subroutine in VBA zu ermitteln, kannst du den folgenden Code verwenden. Diese Methode nutzt die Application.VBE-Objekte, um den Namen der aktuellen Subroutine zu erhalten.

Sub GetSubName()
    Dim subName As String
    subName = Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, vbext_pt_Procedure)
    MsgBox "Der Name der Subroutine ist: " & subName
End Sub
  1. Öffne den VBA-Editor (Alt + F11).
  2. Erstelle ein neues Modul (Rechtsklick auf "VBAProject" > "Einfügen" > "Modul").
  3. Kopiere den obigen Code in das Modul.
  4. Führe die Subroutine GetSubName aus, um den Namen der aktiven Subroutine anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable nicht gesetzt"

    • Lösung: Stelle sicher, dass du im richtigen Modul arbeitest und dass die Subroutine aktiv ist.
  • Fehler: Keine Subroutine gefunden

    • Lösung: Überprüfe, ob du dich im richtigen Codefenster im VBA-Editor befindest, bevor du die Subroutine ausführst.

Alternative Methoden

Eine alternative Methode zur Ermittlung des Subnamens besteht darin, das Application.Caller-Objekt zu verwenden. Dies eignet sich besonders, wenn die Subroutine durch einen Button oder ein anderes Steuerelement aufgerufen wird.

Sub ButtonClick()
    MsgBox "Der Name der aufrufenden Subroutine ist: " & Application.Caller
End Sub
  1. Füge einen Button in dein Excel-Blatt ein.
  2. Verlinke die ButtonClick-Subroutine mit dem Button.
  3. Klicke auf den Button, um den Namen der aufrufenden Subroutine anzuzeigen.

Praktische Beispiele

Hier ist ein Beispiel, wie du den Namen einer Subroutine in einer Filter-Funktion verwenden könntest:

Sub FilterData()
    If Range("C14").Value = 0 Then
        MsgBox "Kein(e) " & Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, vbext_pt_Procedure) & " vorhanden!"
        Exit Sub
    End If
    ' Weitere Filterlogik hier...
End Sub

In diesem Beispiel wird der Subname verwendet, um eine aussagekräftige Fehlermeldung anzuzeigen.


Tipps für Profis

  • Nutze die Debug.Print-Methode, um Subnamen in das Direktfenster zu drucken, anstatt sie nur in einer MsgBox anzuzeigen. Dies kann bei der Fehlersuche hilfreich sein.
Debug.Print "Der Name der Subroutine ist: " & subName
  • Wenn du regelmäßig mit verschiedenen Sub-Namen arbeitest, könntest du überlegen, eine Funktion zu erstellen, die die Namen für dich verwaltet und zurückgibt.

FAQ: Häufige Fragen

1. Wie kann ich den Namen einer Subroutine außerhalb des VBA-Editors ermitteln?
Antwort: Es ist nicht direkt möglich, den Namen einer Subroutine außerhalb des VBA-Editors zu ermitteln, da VBA keine eingebaute Funktion dafür bietet. Du musst den Namen manuell oder durch Debugging ermitteln.

2. Gibt es eine Möglichkeit, den Subnamen in einer MsgBox anzuzeigen, ohne den Code zu ändern?
Antwort: Leider gibt es keine Möglichkeit, den Subnamen in einer MsgBox anzuzeigen, ohne eine Funktion oder Subroutine zu verwenden, die diesen Wert abruft.

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