Platzierung von per VBA-Code generiertem VBA-Code
19.10.2015 15:29:52
per
derzeit "baue" ich in Excel ein Informationstool, welches die unterschiedlichsten Schnittstellen unserer Abteilung informationstechnisch zusammenführt. Über Comboboxen, Button, ListBoxen und das sonstige Zeug lassen sich so sehr schnell strukturiert Informationen zu den einzelnen Schnittstellen abrufen.
Nun stellte sich mir natürlich die Frage, da das Tool insgesamt dynamisch gestaltet werden sollte, wie kann ich neue Schnittstellen über ein UserForm, schnell und einfach einbinden.
Das Tool wird von mehreren Nutzern verwendet, daher der Einfachheit halber ein UserForm.
Nun kann ich derzeit eine neue Schnittstelle definieren (Namen festlegen, Tabellenblatt generieren, Daten einfügen, Namen für den Bereich festlegen, welcher kopiert werden soll [Range] und nun fehlt mir eigentlich nur noch die Aktion, wann die neuen Daten angezeigt werden sollen.
Grundsätzlich erfolgt die Auswahl der Schnittstelle über eine Combox, wenn dort nun "Hallo Welt" steht wird bspw. eine Aktion ausgeführt. Diese Anweisung wird natürlich im Hintergrund hart codiert festgehalten.
Jetzt möchte ich für jede neue Schnittstelle einen VBA-Code per VBA-Code wie man das so schon sagt implementieren.
Nun habe ich mir schon unterschiedliche Ansätze, wie diesen, angeschaut und versucht für mich das richtige zu finden.
With ThisWorkbook.VBProject.VBComponents("Tabelle1").CodeModule
x = .CreateEventProc("SelectionChange", "Worksheet")
.InsertLines x + 15, "'dieses Makro wurde per Makro eingefugt"
.InsertLines x + 18, "Static oldtarget As String"
.InsertLines x + 19, "Static oldindex As Integer"
.InsertLines x + 20, "On Error Resume Next"
.InsertLines x + 21, "Range(oldtarget).EntireRow.Interior.ColorIndex = oldindex"
.InsertLines x + 22, "oldindex = Target.Interior.ColorIndex"
.InsertLines x + 23, "Rows(Target.Row).Interior.ColorIndex = 3"
.InsertLines x + 24, ""
End With
End Sub
#################
Nicht an dem Code orientieren, dieser dient nur als Beispiel und soll verdeutlichen in, welche Richtung das Ganze gehen soll.
################
Nun zur eigentlichen Frage.
Die Abfrage soll per .InsertLines nicht in ein Modul oder eine Tabelle, sondern direkt in den Auswahlbutton [welcher zu allen Aktionen führt] eingefügt werden?
Weiß jemand wie bspw. den oben beschrieben Code dort einfügen und auch noch genau den Punkt festlegen kann, wo dieser eingefügt werden soll?
Vielleicht habt ihr sogar eine ganz andere Lösung ich würde mich über ein paar Antworten sehr freuen :)
Vielen Dank schon einmal für eure Hilfe, ich hoffe ich konnte euch mein Problem einigermaßen verständlich erklären ;).
Mit freundlichen Grüßen
Kulle