Lista namn och startrad för procedurer i en modul

Här visas hur vi kan dokumentera innehållet i enstaka moduler på procedurnivå där vi använder oss av objektet CodeModule.

Glöm inte av att ange en referens "Microsoft Visual Basic for Applications Extensibility 5.3".

Exemplet finns ej att tillgå för hämtning.

 

Option Explicit  

Sub Lista_Procedurer_Modul()

   '© 2002 Alla rättigheter XL-Dennis

   Dim vbaProjekt As VBIDE.VBProject

   Dim vbaModul As VBIDE.VBComponent

   Dim cdModul As VBIDE.CodeModule

   Dim lnRader As Long, lnTyp As Long

   Dim stProc As String

 

   Set vbaProjekt = Workbooks("Formeloversattaren.xla").VBProject

   'Här sätt referensen till ett formulär.

   Set vbaModul = vbaProjekt.VBComponents("UserForm1")

   Set cdModul = vbaModul.CodeModule

 

   'Här skrivs VB-projektets namn och den aktuella modulens namn ut

   'i direktfönstret.

   Debug.Print vbaProjekt.Name & " " & "Procedur : " & vbaModul.Name

   'Här räknas antal rader som moduldeklarationerna använder sig av

   'och skrivs ut i direktfönstret.

   Debug.Print "Antal rader deklarationer :" & cdModul.CountOfDeclarationLines

   'Här identifieras vilka rader som respektive procedur börjar vid och

   'därefter skrivs radnummer och procedurnamn ut i direktfönstret.

   With cdModul

      For lnRader = 1 To .CountOfLines

         stProc = .ProcOfLine(lnRader, lnTyp)

         If stProc <> "" Then

            Debug.Print "Rad "; lnRader, stProc & "(" & lnTyp & ")"

            'För att få korrekt radnummer för nästa procedur.

            lnRader = lnRader + .ProcCountLines(stProc, lnTyp) - 1

         End If

      Next lnRader

   End With

 End Sub

 

Så här ser resultatet ut efter det att ovanstående procedur har exekverats: