Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Combobox einfärben

Forumthread: Combobox einfärben

Combobox einfärben
05.04.2005 14:14:20
Sharkyone
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
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox einfärben
05.04.2005 16:02:20
P@ulchen
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 !
Anzeige
AW: Combobox einfärben
06.04.2005 08:23:55
Markus Brunner
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
Anzeige
AW: Combobox einfärben
06.04.2005 09:27:16
P@ulchen
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:

Die Datei https://www.herber.de/bbs/user/20741.xls wurde aus Datenschutzgründen gelöscht

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
AW: Combobox einfärben
06.04.2005 10:42:04
Markus Brunner
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
Anzeige
AW: Combobox einfärben
06.04.2005 10:48:44
P@ulchen
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 !
Anzeige
AW: Combobox einfärben
06.04.2005 11:23:04
Markus Brunner
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 :-)
Anzeige
AW: Combobox einfärben
07.04.2005 08:56:26
P@ulchen
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 !
Anzeige
AW: Combobox einfärben
07.04.2005 10:09:39
Markus Brunner
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
Anzeige
AW: Combobox einfärben
07.04.2005 10:50:41
P@ulchen
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 !
Anzeige
AW: Combobox einfärben
07.04.2005 11:37:12
Markus Brunner
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
Anzeige
;
Anzeige

Infobox / Tutorial

Combobox einfärben in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und aktiviere die Entwicklertools. Wenn sie nicht sichtbar sind, kannst du sie über die Excel-Optionen aktivieren.

  2. Füge eine ComboBox hinzu: Gehe zu Entwicklertools > Einfügen > ComboBox (Formularsteuerelement).

  3. Benennen der ComboBox: Klicke mit der rechten Maustaste auf die ComboBox und wähle „Steuerelement formatieren“. Achte darauf, dass die ComboBox richtig benannt ist (z.B. ComboBox1).

  4. Code hinzufügen: Gehe in den VBA-Editor (Alt + F11) und füge folgenden Code in das entsprechende Blattmodul ein:

    Private Sub ComboBox1_GotFocus()
       ComboBox1.BackColor = &H80000005 'Setze die Farbe auf Rot
    End Sub
    
    Private Sub ComboBox1_LostFocus()
       If ComboBox1.ListIndex = 0 Then
           ComboBox1.BackColor = &HFF 'Setze die Farbe auf Standard
       Else
           ComboBox1.BackColor = &H80000005 'Setze die Farbe auf Rot
       End If
    End Sub
  5. Teste die Funktion: Wähle verschiedene Einträge in der ComboBox aus, um die Farbänderungen zu prüfen.


Häufige Fehler und Lösungen

  • Fehler: Die ComboBox bleibt weiß, trotz Codeanpassungen.
    Lösung: Überprüfe, ob du den Code im richtigen Blattmodul eingefügt hast. Achte darauf, dass die ComboBox den richtigen Namen hat.

  • Fehler: Die ComboBox zeigt nach Auswahl eines Eintrags kein transparentes Verhalten.
    Lösung: Wenn die ComboBox transparent sein soll, stelle sicher, dass BackStyle auf fmBackStyleTransparent gesetzt ist und teste den Code ohne vorherige Auswahl.


Alternative Methoden

Wenn die oben genannten Methoden nicht funktionieren, kannst du versuchen, die ComboBox über ein Makro zu erstellen:

  1. Erstelle die ComboBox über ein Makro mit Add Combo().
  2. Setze die Eigenschaften für die Farbe direkt im Makro, um mehr Kontrolle über die Darstellung zu haben.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du mehrere ComboBoxen gleichzeitig einfärben kannst. Dies ist besonders nützlich, wenn mehrere ComboBoxen in deinem Arbeitsblatt vorhanden sind:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cb As ComboBox
    For Each cb In Me.ComboBoxes
        If cb.ListIndex = 0 Then
            cb.BackColor = &HFF 'Standardfarbe
        Else
            cb.BackColor = &H80000005 'Rot
        End If
    Next cb
End Sub

Tipps für Profis

  • Verwende Klassenmodule: Wenn du viele ComboBoxen hast, kann es sinnvoll sein, diese in einer Klasse zusammenzufassen. Dies erleichtert die Verwaltung und das Hinzufügen von Funktionen.

  • Verwende die Entf-Taste: Um die Benutzerfreundlichkeit zu erhöhen, kannst du die Entf-Taste so programmieren, dass sie den ersten Eintrag der ComboBox auswählt. Dies kann durch eine kleine Anpassung im Code erreicht werden.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die Farbe der ComboBox während der Bearbeitung ändern?
Antwort: Du kannst den GotFocus und LostFocus-Ereignis verwenden, um die Farbe zu ändern, abhängig davon, ob die ComboBox aktiv ist oder nicht.

2. Frage
Kann ich mehrere ComboBoxen gleichzeitig ansprechen?
Antwort: Ja, du kannst eine Schleife verwenden, um alle ComboBoxen in einem Arbeitsblatt anzusprechen und die Farbe basierend auf den Bedingungen zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige