Infoga eller uppdatera enstaka procedurer

I detta tips visas hur vi kan skapa en procedur och infoga den i önskad modul i den aktiva arbetsboken.

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

 

Option Explicit

 Sub Infoga_Uppdatera_Procedur()

   '© 2002 Alla rättigheter XL-Dennis

   Dim cdModul As VBIDE.CodeModule

   Dim lnRadnr As Long

   Dim stSubNamn As String, stProcedur As String, stSlut As String

   Dim stApostrof As String, stTabb As String, stNyRad As String

 

   stApostrof = Chr(34)

   stTabb = Chr(9)

   stNyRad = Chr(13)

   stSlut = "End Sub"

 

   'Här anges den önskade proceduren.

   stSubNamn = "Private Sub Workbook_Open()" & stNyRad

 

   'Här skapas procedurinnehållet.

   stProcedur = "Dim i As Long" & stNyRad

   stProcedur = stProcedur & _

         "WorkSheets(1).ComboBox1.Clear" & stNyRad

   stProcedur = stProcedur & _

         "For i = 1 To 5" & stNyRad

   stProcedur = stProcedur & _

         stTabb & "Worksheets(1).ComboBox1.AddItem i" & stNyRad

   stProcedur = stProcedur & _

         "Next i" & stNyRad

 

   Set cdModul = ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

 

   'Här infogas den skapade proceduren i den aktiva arbetsboken.

   With cdModul

      lnRadnr = .CountOfLines + 1

      .InsertLines lnRadnr, stSubNamn & stProcedur & stSlut

   End With

 End Sub

 

Här visas det färdiga resultatet i den aktiva arbetsboken och i modulen "ThisWorkbook".

OBS! Ovanstående procedur kontrollerar varken om modul eller om proceduren existerar, än mindre tar bort modul eller tidigare procedur.

Option Explicit

 Private Sub Workbook_Open()

   Dim i As Long

   Worksheets(1).ComboBox1.Clear

   For i = 1 To 5

      Worksheets(1).ComboBox1.AddItem i

   Next i

End Sub