как получить список Function и Sub данного имени модуля в Excel VBA

Я работаю над макросом помощника, которые изучают функцию списка на данном имени модуля на активной рабочей книге Excel. Исключая: у Меня есть имя модуля "Module1". В этом модуле имеет следующую функцию или sub

Sub Sub1()
End Sub

Sub Sub2()
End Sub

Function Func1()
End Function

Function Func2()
End Function

Существует ли команда или стандартная программа, которая может возвратить список названий Function и Sub?

10
задан Community 9 July 2018 в 19:34
поделиться

2 ответа

Вот ссылка на сайт Чипа Пирсона. Это то место, куда я захожу всякий раз, когда мне нужно запрограммировать что-то, что влияет на VBE или использует его. Там есть 2 раздела, которые могут вас заинтересовать. В одном перечислены все модули в проекте. А в другом перечислены все процедуры в модуле. Надеюсь, это поможет.

http://www.cpearson.com/excel/vbe.aspx

Код с сайта (обязательно посетите сайт для получения инструкций по добавлению ссылки на библиотеку объектов VBIDE:

Этот код перечислит все процедуры в модуле Module1, начиная перечисление с ячейки A1.

Sub ListProcedures()
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule
    Dim LineNum As Long
    Dim NumLines As Long
    Dim WS As Worksheet
    Dim Rng As Range
    Dim ProcName As String
    Dim ProcKind As VBIDE.vbext_ProcKind

    Set VBProj = ActiveWorkbook.VBProject
    Set VBComp = VBProj.VBComponents("Module1")
    Set CodeMod = VBComp.CodeModule

    Set WS = ActiveWorkbook.Worksheets("Sheet1")
    Set Rng = WS.Range("A1")
    With CodeMod
        LineNum = .CountOfDeclarationLines + 1
        Do Until LineNum >= .CountOfLines
            ProcName = .ProcOfLine(LineNum, ProcKind)
            Rng.Value = ProcName
            Rng(1, 2).Value = ProcKindString(ProcKind)
            LineNum = .ProcStartLine(ProcName, ProcKind) + _
                    .ProcCountLines(ProcName, ProcKind) + 1
            Set Rng = Rng(2, 1)
        Loop
    End With

End Sub

Function ProcKindString(ProcKind As VBIDE.vbext_ProcKind) As String
    Select Case ProcKind
        Case vbext_pk_Get
            ProcKindString = "Property Get"
        Case vbext_pk_Let
            ProcKindString = "Property Let"
        Case vbext_pk_Set
            ProcKindString = "Property Set"
        Case vbext_pk_Proc
            ProcKindString = "Sub Or Function"
        Case Else
            ProcKindString = "Unknown Type: " & CStr(ProcKind)
    End Select
End Function
6
ответ дан 4 December 2019 в 02:25
поделиться

Есть также бесплатный инструмент под названием "MZ-Tools". Установите его в качестве дополнения, он нумерует ваши строки кода, генерирует стандартный код управления ошибками, проверяет неиспользуемые переменные, упорядочивает ваши функции и подфункции и ... документирует ваш код, автоматически генерируя список ваших процедур с параметрами, комментариями и т.д...... Отличный инструмент!

2
ответ дан 4 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: