AW: Makronamen auflisten
19.06.2018 14:00:52
Nepumuk
Hallo Woto,
teste mal:
Option Explicit
Private Sub UserForm_Initialize()
Dim objVBComponents As Object
Dim lngLine As Long, ialngIndex As Long
Dim strLastName As String, astrProcedures() As String
'Alle oeffentlichen Prozeduren in Standardmodulen suchen
For Each objVBComponents In ThisWorkbook.VBProject.VBComponents
With objVBComponents.CodeModule
'Nur in Standardmodulen
If objVBComponents.Type = 1 Then
'Schleife ueber alle Zeilen im Modul
For lngLine = 1 To .CountOfLines
'Prozedurname gefunden
If .ProcOfLine(lngLine, 0) <> vbNullString Then
'Neuer Prozedurname
If .ProcOfLine(lngLine, 0) <> strLastName Then
'Zeile ist nicht leer
If Trim$(.Lines(lngLine, 1)) <> vbNullString Then
'Wenn es keine Function ist
If .Lines(lngLine, 1) Like "*Sub *()" Then
'Name der Prozedur merken
strLastName = .ProcOfLine(lngLine, 0)
'Prozedur ist nicht Privat
If Left$(.Lines(lngLine, 1), 7) <> "Private " Then
'Prozedurne und Modulname an Listbox übergeben
Call ListBox1.AddItem(pvargItem:=strLastName)
End If
End If
End If
End If
End If
Next
End If
End With
Next
End Sub
Gruß
Nepumuk