2010-04-13 10 views
7

Estoy trabajando en una macro auxiliar que examina la función de lista en un nombre de módulo dado en el libro de Excel activo. Ej .: Tengo un nombre de módulo "Module1". Dentro de este módulo tiene la siguiente función o subcómo obtener la lista de funciones y subtítulos de un nombre de módulo dado en Excel VBA

Sub Sub1() 
End Sub 

Sub Sub2() 
End Sub 

Function Func1() 
End Function 

Function Func2() 
End Function 

¿Hay un comando o rutina que puede devolver la lista de los nombres de las funciones y sub?

Respuesta

5

Aquí hay un enlace al sitio de Chip Pearson. Aquí es donde voy cada vez que necesito programar algo que afecta o usa el VBE. Hay 2 secciones que pueden interesarle. Uno enumerará todos los módulos en un proyecto. Y otro enumerará todos los procedimientos en un módulo. Espero que ayude.

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

Código del lugar (asegúrese de visitar el sitio para obtener instrucciones sobre cómo agregar una referencia a la biblioteca de objetos VBIDE:

Este código será una lista de todos los procedimientos en el módulo 1, a partir de la lista de A1 celular.

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 
2

también hay una herramienta gratuita llamada "MZ-Tools". instalarlo como un add-in, números de sus líneas o FCode, generar código de gestión de errores estándar, compruebe las variables utilizadas, ordenar su funciones una d sub y ... documente su código, generando automáticamente una lista de sus procedimientos con parámetros, comentarios, etc. ... ¡Una gran herramienta!

Cuestiones relacionadas