Kra*_*atz 10 excel vba excel-vba
我正在研究一个辅助宏,它调查活动excel工作簿上给定模块名称的list函数.例如:我有一个模块名称"Module1".该模块内部具有以下功能或子功能
Sub Sub1()
End Sub
Sub Sub2()
End Sub
Function Func1()
End Function
Function Func2()
End Function
Run Code Online (Sandbox Code Playgroud)
是否有可以返回函数和子名称列表的命令或例程?
这是Chip Pearson网站的链接.每当我需要编写影响或使用VBE的东西时,我就会去.有两个部分可能会让您感兴趣.一个将列出项目中的所有模块.另一个将列出模块中的所有过程.希望有所帮助.
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
Run Code Online (Sandbox Code Playgroud)