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
Sub Musik()
msgbox "sub.name" ==>>> Ergebnis "Musik"
End Sub
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
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
GetSubName
aus, um den Namen der aktiven Subroutine anzuzeigen.Fehler: "Objektvariable nicht gesetzt"
Fehler: Keine Subroutine gefunden
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
ButtonClick
-Subroutine mit dem Button.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.
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
Sub
-Namen arbeitest, könntest du überlegen, eine Funktion zu erstellen, die die Namen für dich verwaltet und zurückgibt.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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen