Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1648to1652
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

Excel ActiveX Kombinationsfeld über VBA füllen

Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 19:23:19
SteinApfel
Hallo liebe Community,
ich bin neu hier, habe aber schon einiges in den letzten Tagen hier gelesen und bisher hat es mir auch weitergeholfen.
Nun habe ich ein Problem mit Excel 2016 mit Makros und einem Steuerelement ActiveX Kombinationsfeld.
Ich habe dieses Element in meine Tabelle1 (Umbenannt in "Voreinstellungen") eingefügt und würde jetzt gerne nur über VBA dieses Element mit Daten füllen.
Ein Event "Initialize" gibt es leider nicht dabei.
Auslesen aus Zellen möchte ich vermeiden.
Ich dachte an einem
Public Sub .... ()
With DrpSystem
.additem="ESG"
.additem="VSG"
end with
End Sub
allerdings weiß ich nicht wo ich diesen "public sub" einfügen sollte. Die Möglichkeiten die ich bisher ausgetestet habe führten immer zu Runtime Errors oder Fehlern, dass es nicht ausgeführt werden kann.
Ich bitte um Hilfe!
Vielen Dank :)

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 19:27:15
Hajo_Zi
das Element hat also den Namen "DrpSystem" es fehlt die Tabelle davor oder hast Du den Code unter der Tabelle? Das konnte ich nicht sehen.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 19:32:08
SteinApfel
Danke für die schnelle Antwort.
Ich habe 1 Tabellenblatt namens "Voreinstellungen" auf diesem habe ich das Element gelegt mit dem Namen "DrpSystem".
Das ist leider auch, glaube ich, meine Frage. (Entschuldige, falls ich deine Frage falsch verstehen sollte)
Ich weiß nicht wo ich den Code schreiben soll geschweige unter welchem Event.
Ich habe "Diese Arbeitsmappe" und "Tabelle1 (Voreinstellungen)" die mir in VBA angezeigt werden.
Die Arbeitsmappe sollte für "Public Sub's" benutzt werden und Tabelle1(Voreinstellungen) für "Private Sub's". Oder habe ich da schon einen Denkfehler?
Ich bin leider Neuling auf dem Gebiet und versuche mich aktuell an einem Projekt.
Anzeige
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 19:46:38
Daniel
HI
das Initialize-Event gibt es nur für Userforms.
da musst du schauen, welche Events es gibt (auf Workbook-, Worksheet und auf Steuerelement-ebene) und welche für deinen Anwendungsfall sinnvoll sind.
wenn sich die Daten, mit denen das Kombinantionsfeld gefüllt werden soll, ständig änderen und dieses immer die aktuellsten Daten enthalten soll, könnest du das GotFocus- oder das DropButtonClick-Event des Kombinantiosfeldes verwenden. Dann werden die Inhalte bei jedem Anklicken neu eingelesen.
Verändern sich die Inhalte jedoch nicht, dann könntest du das Workbook_Open-Event im Modul "DieseArbeitsmappe" verwenden, um den Code zum Befüllen unterzubringen.
Dann würde die Combobox beim Öffnen der Datei mit den Inhalten befüllt (das würde dann am ehesten dem Initialize-Event der Userform entsprechen)
Dort musst du dann allerdings den Tabellenblattnamen voranstellen, damit VBA weiß, auf welchem Tabellenblatt sich die Combobox befindet:
Modul DieseArbeitsmappe
Private Sub Workbook_Open()
With Tabelle1.DrpSystem
.additem="ESG"
.additem="VSG"
end with
End Sub
Gruß Daniel
Anzeige
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 20:04:25
SteinApfel
Vielen Dank auch dir für die schnelle Antwort.
Also, ich habe folgendes gemacht:
1. Dein Code kopiert und eingefügt in die Arbeitsmappe.
Nachdem ich Play gedrückt habe kam nur, dass eine Zuweisung von Konstanten nicht zulässig sei.
2. Statt "Tabelle1" habe ich "Voreinstellungen" geschrieben (da ich dachte, dass VBA den geänderten Namen erkennt), dies wiederum erkennt es als nicht definierte Variable.
Beide Varianten laufen nicht durch.
Und ja, die Eingabe soll dauerhaft sein, an dem Steuerelement soll sich nichts ändern.
Daher klang dein Vorschlag super, nur leider will Excel das bei mir so nicht umsetzen. -.-
Anzeige
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 20:20:39
Daniel
naja ersten ist:
"ich habe deinen Vorschlag kopiert" immer ganz schlecht, das wissen wir doch spätestens seit Guttenberg.
Besser ist immer Lesen, verstehen, selber programmieren und dabei dann auch auch die Umstände berücksichtigen, die ich nicht kennen kann, weil ich deine Datei nicht prüfe.
ich werde z.B. bei sowas auch nie darauf achten, ob ich jetzt einen Tippfehler z.B. bei der Benennung des Steuerelements habe, weil erstens gar nicht weiß, wie dein Steuerelement in deiner Datei bezeichnet ist und zweites, weil ich davon ausgehe, dass du das selber richtig schreiben kannst, weil du weißt ja, wie es heißt.
und naja, wenn der Fehler passiert, dann interessiert nicht mein Code, sondern dein Code in deiner Datei.
Außerdem ist die Formulierung "eingefügt in die Arbeitsmappe" nicht präzise genug.
die Arbeitsmappe ist die ganze Exceldatei und es gibt viele Stellen, an denen du den Code einfügen kannst. Ich meinte präzise in das Modul "DieseArbeitsmappe".
Weiterhin ist es bei Eventmakros immer wichtig, dass die Kopfzeile genauso geschrieben ist, wie VBA es erfordert.
Daher sollte man so ein Eventmakro immer selbst erstellen.
Hierzu wählt man im VBA-Editor das entsprechende Modul aus, klickt dann in linken Combobox über dem Codefenster das Objekt an, zu dem man das Eventmakro erstellen möchte und wählt dann in der rechten Combobox das Event aus (es werden dort nur die zum Objekt passenden Events angeboten)
VBA erstellt dann im Codefenster das Makro dazu mit der richtigen Schreibweise mit Kopf und Endzeile und du kannst dazwischen den notwendigen Code einfügen.
Gruß Daniel
Anzeige
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 20:33:50
SteinApfel
Da gebe ich dir recht, an sich kopiere ich auch nicht einfach so. Allerdings war alles richtig geschrieben und ich konnte es "einfach so" kopieren und einfügen.
Es soll auch eine globale Einstellung sein, also eine dauerhafte ohne Abhängigkeit von irgendwelchen Tabellen. Die drei untenstehenden Begriffe sollen in das Steuerelement (Combobox) mit dem Namen "DrpSystem" hinzugefügt werden.
Private Sub Workbook_Open()
With Tabelle1.DrpSystem
.AddItem = "ESG"
.AddItem = "VSG"
.AddItem = "Einfachverglasung"
End With
End Sub
in VBA stehen alle Tabellen, die Tabelle in der das Element eingefügt wurde heißt dort links in der Auflistung "Tabelle1 (Voreinstellungen)".
Meine beiden Checkboxen kann ich auch ansteuern darüber und das funktioniert auch ohne Probleme, nur das Dropdownmenü nicht.
Anzeige
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 20:41:26
Daniel
achso, da hatte ich jetzt nicht drauf geachtet:
.AddItem ist keine Eigenschaft, der man einen bestimmten Wert zuweist.
.AddItem ist ein Befehl, daher kein Gleichheitszeichen zwischen .AddItem und dem Wert, nur das Leerzeichen.
Gruß Daniel
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 20:52:58
SteinApfel
:D Aber super, jetzt klappt es wie ich es wollte.
Vielen Dank und ich wünsche noch einen angenehmen Abend.
Es ist gut möglich, dass ich die nächsten Wochen des öfteren hier was erfragen werde, hoffe es funktioniert dann auch so gut. Ich versuche auch das Problem so verständlich wie möglich zu formulieren. :)
AW: Excel ActiveX Kombinationsfeld über VBA füllen
03.10.2018 20:44:18
onur
Private Sub Workbook_Open() startet ja auch nur einmal, und zwar, wenn du die Datei neu gestartet hast.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige