Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Platzierung von per VBA-Code generiertem VBA-Code

Platzierung von per VBA-Code generiertem VBA-Code
19.10.2015 15:29:52
per
Hallo liebe Community,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Platzierung von per VBA-Code generiertem VBA-Code
19.10.2015 16:37:12
per
Hallo,
ein Steuerelement kann keinen Code enthalten. Der muss zwingend in irgendein Modul.
Zudem, wenn du Code "OnTheFly" erzeugen willst muss in TrustCenter die Option "Zugriff auf das VBA-Projektmodell zulassen" aktiviert sein, ansonsten läufst du in einen Fehler.
Gruß
Nepumuk

AW: Platzierung von per VBA-Code generiertem VBA-Code
20.10.2015 07:46:11
per
Hallo Nepumuk,
vielen Dank für deine schnelle Antwort :) ,ich spreche hier aber von Active-X-Elementen und nicht von einfachen Formularsteuerelementen. Diese können Code enthalten. Ebenfalls kann ich bereits Code "OnTheFly" produzieren. Alle Einstellungen wurden bereits getroffen.
Mir geht es in diesem Post primär um die Positionierung des erzeugten Codes wie kann ich diesen an eine bestimmte Stelle platzieren, damit der weitere Verlauf des eigentlichen Codes nicht gestört wird.
Also bspw. in ein bestimmtes Modul mit dem Namen "X" oder wie bereits beschrieben in einen "button", welcher die geschriebene Aktion durch ein Click-Event aufruft.
Vielen Dank
Gruß
Kulle

Anzeige
AW: Platzierung von per VBA-Code generiertem VBA-Code
20.10.2015 11:06:46
per
Hallo,
meinst du sowas?
Sub aaaa()
Dim oCmd As OLEObject, sCode As String
Set oCmd = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CommandButton.1", _
Left:=100, Top:=100, Width:=100, Height:=40)
oCmd.Object.Caption = "Test"
oCmd.Name = "TestButton_1"
sCode = "Private Sub " & oCmd.Name & "_Click()"
sCode = sCode & vbLf & "  MsgBox ""Hallo!"""
sCode = sCode & vbLf & "End Sub"
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName) _
.CodeModule.AddFromString sCode
End Sub
Gruß
Rudi

AW: Platzierung von per VBA-Code generiertem VBA-Code
20.10.2015 15:17:10
per
Hallo Rudi,
vielen Dank für deine Antwort :) hat mich auf jedenfall weitergebracht :).
Letztlich habe ich einen Lösungsansatz auf einer sehr guten Seite gefunden die dieses Thema, anschaulich aufgearbeitet hat und sich allgemein mit dem Einfügen von Code durch VBA-Code beschäftigt. Kann diese Seite sehr empfehlen.
Grüße
Kulle
http://www.cpearson.com/excel/vbe.aspx
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige