Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Dynamische Generierung von Programmteilen

Gruppe

Prozedur

Problem

Während der Laufzeit werden Programmteile generiert und gelöscht.

Lösung
Den nachstehenden Code in ein Standardmodul eingeben, einer Schaltfläche zuweisen und starten.

StandardModule: Modul1

Sub SplitArray()
   Dim mdl As Object
   Dim arr(1 To 2, 1 To 12)
   Dim iCounter As Integer, iAct As Integer
   Dim sCode As String
   Application.VBE.MainWindow.Visible = False
   For iCounter = 1 To 12
      arr(1, iCounter) = iCounter
      arr(2, iCounter) = Format(DateSerial(1, iCounter, 1), "mmmm")
   Next iCounter
   sCode = "Sub NewArrays(arrWhole)" & vbLf
   sCode = sCode & "   Dim iAct as Integer" & vbLf
   For iCounter = 1 To UBound(arr, 1)
      sCode = sCode & "   Dim arr" & iCounter & "(1 to " & _
         UBound(arr, 2) & ")" & vbLf
      sCode = sCode & "   For iAct = 1 to " & _
         UBound(arr, 2) & vbLf
      sCode = sCode & "      arr" & iCounter & "(iAct) = arrWhole(" & _
         iCounter & ", iAct)" & vbLf
      sCode = sCode & "   Next iAct" & vbLf
      sCode = sCode & "   For iAct = 1 to " & _
         UBound(arr, 2) & vbLf
      sCode = sCode & _
         "      MsgBox ""Datenfeld "" & iAct & "" aus Array arr" & _
         iCounter & ": "" & arr" & iCounter & "(iAct)" & vbLf
      sCode = sCode & "   Next iAct" & vbLf
   Next iCounter
   sCode = sCode & "End Sub" & vbLf & vbLf
   Set mdl = ThisWorkbook.VBProject.VBComponents.Add(1)
   mdl.CodeModule.AddFromString sCode
   Call Aufruf(arr)
   ThisWorkbook.VBProject.VBComponents.Remove mdl
End Sub

Sub Aufruf(arrAct As Variant)
   Call NewArrays(arrAct)
End Sub

    

Beiträge aus dem Excel-Forum zu den Themen VBE und Prozedur