2010-04-13 19 views
7

Sto lavorando su una macro helper che esamina la funzione list su un dato nome di modulo sulla cartella di lavoro attiva di Excel. Es: Ho un nome modulo "Modulo1". All'interno di questo modulo ha la seguente funzione o subcome ottenere l'elenco di Function e Sub del nome di un determinato modulo in Excel VBA

Sub Sub1() 
End Sub 

Sub Sub2() 
End Sub 

Function Func1() 
End Function 

Function Func2() 
End Function 

C'è un comando o di routine che può restituire l'elenco dei nomi delle funzioni e Sub?

risposta

5

Ecco un collegamento al sito di Chip Pearson. Questo è dove vado ogni volta che ho bisogno di programmare qualcosa che influenzi o usi il VBE. Ci sono 2 sezioni che potrebbero interessarti. Uno elencherà tutti i moduli in un progetto. E un altro elencherà tutte le procedure in un modulo. Spero possa aiutare.

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

codice dal sito (assicuratevi di visitare il sito per le istruzioni su come aggiungere un riferimento alla libreria di oggetti VBIDE:

Questo codice elencherà tutte le procedure in Module1, iniziando la quotazione in la cella 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 
2

C'è anche uno strumento gratuito chiamato "MZ-Tools". Installarlo come un add-in, i numeri le linee o codice f, generare il codice gestione degli errori standard, controllare le variabili non utilizzate, ordinare il funziona a d sub e ... documenta il tuo codice, generando automaticamente un elenco delle tue procedure con parametri, commenti, ecc .... Un ottimo strumento!

Problemi correlati