一旦开始编写Excel宏,就很容易在工作簿中获得其中的很多宏。在某些时候,您可能想在工作簿中生成一个宏列表。 Excel中没有内部方法来创建宏列表。但是,您可以创建一个宏,该宏将列出您的宏。 (听起来有点多余,不是吗?)

作为示例,请考虑以下宏,该宏将逐步浏览工作簿中的所有项目以获取所有宏名称并将其放置在工作表中:

Sub ListMacros()

Dim VBComp As VBComponent     Dim VBCodeMod As CodeModule     Dim oListsheet As Object     Dim StartLine As Long     Dim ProcName As String     Dim iCount As Integer

Application.ScreenUpdating = False     On Error Resume Next     Set oListsheet = ActiveWorkbook.Worksheets.Add     iCount = 1     oListsheet.[a1] = "Macro"



For Each VBComp In ThisWorkbook.VBProject.VBComponents         Set VBCodeMod = ThisWorkbook.VBProject.VBComponents(VBComp.Name).CodeModule         With VBCodeMod             StartLine = .CountOfDeclarationLines + 1             Do Until StartLine >= .CountOfLines                 oListsheet.[a1].Offset(iCount, 0).Value = _                   .ProcOfLine(StartLine, vbext_pk_Proc)

iCount = iCount + 1

StartLine = StartLine + _                   .ProcCountLines(.ProcOfLine(StartLine, _                    vbext_pk_Proc), vbext_pk_Proc)

Loop         End With         Set VBCodeMod = Nothing     Next VBComp

Application.ScreenUpdating = True End Sub

为了使用此宏,您必须确保已设置Microsoft VBA可扩展性参考。为此,请按照下列步骤操作:

。在VBA编辑器中,从“工具”菜单中选择“引用”。显示“引用”对话框。 (请参见图1。)

。滚动浏览“可用引用”列表,并确保已选中“ Microsoft Visual Basic应用程序可扩展性”复选框。

。关闭对话框。

当您运行宏时,它将一个新的工作表添加到您的工作簿,然后列出工作簿中所有模块中所有宏的名称。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2715)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: