Combobox einfärben

Bild

Betrifft: Combobox einfärben
von: Sharkyone
Geschrieben am: 05.04.2005 14:14:20
Hallo Excelfreaks,
ich habe folgendes Problem:
Über 2/3 einer Zelle habe ich eine Combobox plaziert. Diese Combobox soll rot erscheinen, solange der erste Listeneintrag (“Bitte Daten hier auswählen“) aktiviert ist. Bei der Auswahl eines darunterliegenden Listeneintrages soll die Farbe der Combobox auf Standard (weißes Feld mit schwarzer Schrift) wechseln.
Wenn möglich sollte das Dropdownfeld der Combobox bei der Auswahl normal (weiß mit schwarzer Schrift) bleiben.
Mein erster Ansatz war, die Combobox mit .BackStyle = fmBackStyleTransparent durchsichtig zu machen und über die Linkedcell die Hintergrundfarbe der Zelle entsprechend anzupassen.
Leider macht mir hier ein Excelfehler einen Strich durch die Rechnung. Sobald in einer transparenten Combobox ein Listeneintrag ausgewählt wurde, ist diese nicht mehr transparent und kann auch nicht mehr transparent gemacht werden :-(
Mein zweiter Ansatz war eine ’unsichtbare’, ’jungfräuliche’ Combobox auf der Tabelle zu platzieren um bei Bedarf die ’benutzte’ Combobox durch die unbenutzte zu ersetzen. Leider bin ich hierbei noch nicht dahinter gekommen, warum mir Excel manchmal die Kopie mit dem Namen ’Combobox1’ und manches mal die Kopie mit dem Namen ’Combobox44’ anlegt. (Die als Kopiervorlage dienende Combobox hat den Namen ’Combobox43’ und die zu ersetzende Combox heißt ’Combox1’).
Da ich nicht weiss, wie Excel die neu erstellte Kopie benennt, kann ich auch nicht mehr mit meinem Code gezielt auf die richtige Combobox zugreifen.
Am liebsten wäre mir, wenn man die Combox direkt, aktionsabhängig einfärben könnte.
Hat jemand eine Idee?
cu
Marco

Bild

Betrifft: AW: Combobox einfärben
von: P@ulchen
Geschrieben am: 05.04.2005 16:02:20
Hallo Marco,
setze im Eigenschaftsfenster der Combobox BackColor auf rot und in das Modul der Tabelle mit der Combobox folgenden Code:


Private Sub ComboBox1_GotFocus()
ComboBox1.BackColor = &H80000005
End Sub
Private Sub ComboBox1_LostFocus()
If ComboBox1.ListIndex = 0 Then
    ComboBox1.BackColor = &HFF&
Else
    ComboBox1.BackColor = &H80000005
End If
End Sub

     Code eingefügt mit Syntaxhighlighter 2.1

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: Combobox einfärben
von: Markus Brunner
Geschrieben am: 06.04.2005 08:23:55
Hallo P@ulchen,
vielen Dank für Deine Antwort. Ich habe es heute früh gleich getestet. Leider funktioniert es nicht. Warscheinlich mache ich irgend etwas falsch.
Ich bin wie folgt vorgegangen:
Meine manuell, mit Hilfe des 'Kombinationsfeld'-Icons erstellte Kombobox hat leider über das Kontext-Menü 'Steuerelement formatieren' nur die Reitereinträge: 'Größe, Schutz, Eigenschaften, Web'. Interessant ist, dass wenn ich die Kombox über ein Macro mit 'Add Combo()' erstelle, die zusätzlichen Objekteigenschaften 'Farben, Linien' vorhanden sind.
Leider kann ich hier zwar in den Objekteigenschaften über Farbe/Linien/Aufüllen/Farbe die Farbe (z.B. rot) einstellen, aber die Kombobox zeigt sich von meinen Bemühungen unbeeindruckt und bleibt weiss.
Wenn ich die Kombobox im Entwurfsmodus bearbeite (BackStyle steht auf fmBackstyleOpaque) und z.B. die BackColor auf rot ändere, wird die Kombobox inkl. Auswahlmenü zwar rot, ändert aber leider die Farbe beim Auswählen eines anderen Komboeintrags trotz Makro nicht.
Das Makro habe ich im Makrocode direkt unter "Diese Arbeitsmappe" hinterlegt.
Ich würde mich sehr freuen, wenn Du mir weiterhelfen könntest.
cu
Marco
Bild

Betrifft: AW: Combobox einfärben
von: P@ulchen
Geschrieben am: 06.04.2005 09:27:16
Hallo Markus,
natürlich helfe ich Dir weiter, dafür sind wir ja hier...
Allerdings dachte ich, daß meine Angaben bei dem von Dir angegebenen Level ausreichend wären.
Hier eine Beispielmappe: https://www.herber.de/bbs/user/20741.xls
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: Combobox einfärben
von: Markus Brunner
Geschrieben am: 06.04.2005 10:42:04
Hallo P@ulchen,
vielen Dank für die Beispieldatei. Jetzt funktionierts :-) Mein Fehler war, dass ich die PrivateSub Routine falsch eingebunden habe. Mit PrivatSub hatte ich bisher nur im Zusammenhang mit Arbeitsmappen Erfahrungen sammeln dürfen.
Eine kleine Frage habe ich noch. Da ich insgesammt 24 Comboboxen über die selbe Routine ansprechen möchte, wäre eine kleine For-Next Schleife cool. Ich bin mir aber nicht sicher, ob man dies mit den zwei PrivatSub-Routinen hin bekommt. Wenn nicht, wäre es auch kein Beinbruch.
Zu meiner Selbsteinschätzung: Da hast du recht, ich habe mich selbst zu hoch eingschätzt. Warscheinlich deshalb, weil ich in einer Firma mit ca. 12.000 Mitarbeitern in Bayern zu den Personenkreis zähle, die in ab und zu in VBA programmieren.
Aber unter Euch Profis bin ich nicht mal ein kleines Licht. Liegt aber auch daran, dass bei uns sehr selten VBA-Projekte auflaufen und ich noch viel andere interessante Tätigkeitsbereiche habe.
Schöne Grüße aus dem Frankenlande nach Leipzig.
cu
Marco
Bild

Betrifft: AW: Combobox einfärben
von: P@ulchen
Geschrieben am: 06.04.2005 10:48:44
Hallo Markus,
befinden sich diese Comboboxen alle im selben Blatt ?
Wie werden sie befüllt, statisch oder dynamisch ? Wird in allen Comboboxen die gleiche Auswahl angeboten ?
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: Combobox einfärben
von: Markus Brunner
Geschrieben am: 06.04.2005 11:23:04
Hallo P@ulchen,
die Komboboxen 1-12 und 13-24 befinden sich alle auf dem gleichen Blatt und sind alle vom Inhalt identisch nur der ListFilledRange ist bei beiden Kombogruppen unterschiedlich.
Die LinkedCell der Komboboxen verweist jeweils auf Spalte G in der selben Zeile. Dies dürfte aber für das Macro ohne Bedeutung sein.
Die Einträge zum Auffüllen sind in einer weiteren Tabelle enthalten. Die Zellbereiche zum Auffüllen habe ich zum Testen mit XXX und YYY bennant.
Eine Kleinigkeit zur Steigerung der Benutzerfreundlichkeit ist mir beim Testen noch aufgefallen.
Die Tabelle soll so eine Art DAU-sicheres Formular werden. Deshalb habe ich Style auf 2 gesetzt. Mit welcher Routine erreiche ich, dass der Benutzer beim Drücken der Entf.-Taste automatisch auf den ersten Comboeintrag der jeweilgen Combobox springt?
Herzliche Grüße
Marco
PS: Ich finde es super, dass Du mir so toll hilfst :-)
Bild

Betrifft: AW: Combobox einfärben
von: P@ulchen
Geschrieben am: 07.04.2005 08:56:26
Hallo Marco,
ich habe mal die ComboBoxen in einer Klasse zusammengefasst: https://www.herber.de/bbs/user/20803.xls
Bin mir zwar nicht sicher, ob es das Gelbe vom Ei ist, aber es funktioniert.
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: Combobox einfärben
von: Markus Brunner
Geschrieben am: 07.04.2005 10:09:39
Hallo P@ulchen,
mensch Du bist genial :-) Vieeelen herzlichen Dank. Du machst Dir echt viel Arbeit mit meinen Problemen.
Mit Class-Modulen hatte ich übrigens bis jetzt noch keine Erfahrung. Wenn ich es richtig sehe, sind die, wenn sie der Excel-Tabelle zugeordnet sind, nur beim Öffnen dieser Excel-Datei aktiv. (Mir ist nur wichtig, dass die nicht generell in den Class-Table von Excel bzw. in die Vorlagendatei übernommen werden, sonst dürfte ich die hier in meiner Firma nicht verwenden.)
Was muss ich im Code noch ergänzen, damit in der Combobox durch drücken der Entf-Taste die Position 1 der Auswahlliste aktiviert wird, so wie dies z.B. beim Drücken der Taste Pos1 geschieht?
Herzliche Grüße aus dem Frankenlande
Marco
Bild

Betrifft: AW: Combobox einfärben
von: P@ulchen
Geschrieben am: 07.04.2005 10:50:41
Hallo Marco,
für die Abfrage der Entf-Taste habe ich im Modul Klasse1 noch einen Code eingefügt.
Desweiteren habe ich den Code im Workbook_Open um
Sheets("Tabelle1").Activate erweitert, da er sonst nicht funktioniert, wenn beim Öffnen ein anderes Blatt aktiv ist. Den Blattnamen mußt Du halt anpassen.
Zu Deinem Verständnis (und zur Beruhigung Deiner IT-Sheriff´s):
Beim Öffnen der Datei werden die in Tabelle1 befindlichen Comboboxen in einer Klasse zusammengefasst.
Wird dann ein beliebiges Element dieser Klasse verändert, wird das betreffende Makro im Klassenmodul gestartet. Somit muß der Code nicht für jede einzelne ComboBox eingegeben werden.
Dies gilt insgesamt auch nur für diese Mappe und hat keinen Einfluß auf andere Mappen oder Deine Excel-Einstellungen.
https://www.herber.de/bbs/user/20811.xls

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: Combobox einfärben
von: Markus Brunner
Geschrieben am: 07.04.2005 11:37:12
Hallo P@ulchen,
genial... super... genau so wollte ich es haben.
Gaaanz vielen herzlichen Dank. Du hast mir schnell, effizient und fachmännisch geholfen und ich habe dabei sogar noch eingiges gelernt :-)
Ich sage nur Danke und Hut ab vor soviel know how.
Herzliche Grüße aus Mittelfranken
Marco
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Combobox einfärben"