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

ListBox.BackColor = xxxx

Forumthread: ListBox.BackColor = xxxx

ListBox.BackColor = xxxx
06.11.2004 02:14:39
Stefan
Guten Tag miteinander
Ich habe eine ListBox, bei welcher ich nach einem Click_Ereignis die
BackColor wechseln möchte. Dies gelingt nicht, d.h. die bisherige Hintergrundsfarbe bleibt kontant stehen. Möglicherweise hat das damit zu tun, dass die ausgewählte Zeile immer noch markiert (Fokus) hat. Wie könnte ich den Fokus (Markierte Datenreihe) aus der ListBox wegnehmen. Einfach den Fokus auf ein anderes Steuerelement setzen hilft nicht.
Besten Dank.
Gruss
Stefan
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox.BackColor = xxxx
06.11.2004 08:46:47
Rolf
Hallo Stefan,
zeig doch mal deinen bisherigen Code
FG
Rolf
AW: ListBox.BackColor = xxxx
Stefan
Guten Tag
Gerne, Hier ist der Code. Er wechsel einfach die Hintergrundsfarbe nicht. Wenn ich das aushalb dieses Codes (Click) geht es. Hat das was mit dem Fokus bzw. genauer damit zu tun, weil die Datenreihe markiert ist? Irgendwas mit der Einstellung der ListBox, die dann keine Ereignisse zulässt, sobald eine Datenreihe markiert wurde?
Grüsse
Stefan
Die Farbe ist vorher eingestellt auf BackColor = &H00C0E0FF&

Private Sub ListBox_M_Click()
Dim intAusTotal As Integer
Dim intAusBisher As Integer
On Error GoTo ErrorHandler
With ListBox_M
txtMAuswahl.Text = .Text
txtLogonID.Text = .List(.ListIndex, 1)
txtMBisher.Text = .List(.ListIndex, 2)
txtMMax.Text = .List(.ListIndex, 3)
If txtMAuswahl.Text <> "" Then _
.BackColor = &HC0FFFF
End with
Exit Sub
ErrorHandler:
MsgBox "Unbekannter Fehler aufgetreten!" & vbCrLf & vbCrLf & _
"Laufzeitfehler Nr. " & Err.Number & vbCrLf & _
"Beschreibung: " & Err.Description & vbCrLf & vbCrLf & _
"Der Vorgang kann nicht ausgeführt werden.", vbCritical
End Sub

Anzeige
Mouse_Down
06.11.2004 12:08:00
Rolf
Hallo Stefan,
bei mir klappt's mit Mouse_Down
FG
Rolf
AW: Mouse_Down
Stefan
Hallo Rolf
Bitte sage mir, wie ich das mit MouseDown bewerkstelligen kann. Irgendwie brauchts hier noch das Object?
Grüsse
Stefan
PS Bin daran sehr interessiert, da ich schon lange nach einer Lösung suche
AW: Mouse_Up
Stefan
Jetzt habe ich es gefunden. Beim mir geht es nur mit
MouseUp
Doch ich bin zufrieden, es geht. Schade ist etwas das die blaue Markierung in der ListBox
verloren geht.
Grüsse
Stefan

Private Sub ListBox_Mitarbeiter_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'

Private Sub ListBox_Mitarbeiter_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If txtMAuswahl.Text <> "" Then ListBox_Mitarbeiter.BackColor = &HC0FFFF
End Sub

Anzeige
AW: Mouse_Up
06.11.2004 12:51:33
Rolf
Hallo Stefan,
die schöne blaue Farbe kannst du
doch initialisieren

Private Sub UserForm_Initialize()
ListBox1.BackColor = &HFF0000
End Sub

FG
Rolf
AW: ListBox.BackColor = xxxx
06.11.2004 11:25:40
Hajo_Zi
Hallo Stefan,
ich habe jetzt den Code nicht nachgebaut, aber vielleicht reicht schon DoEvents?
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
AW: ListBox.BackColor = xxxx
Stefan
Guten Tag Hajo
Auch DoEvents gibt keine Abhilfe.
Grüsse
Stefan
;
Anzeige

Infobox / Tutorial

ListBox Hintergrundfarbe in Excel VBA ändern


Schritt-für-Schritt-Anleitung

Um die Hintergrundfarbe einer ListBox in Excel VBA zu ändern, verwende den folgenden Code in deinem UserForm:

  1. Öffne die VBA-Entwicklungsumgebung (Alt + F11).

  2. Füge eine UserForm hinzu und platziere eine ListBox darauf.

  3. Füge den folgenden Code für das MouseUp-Ereignis der ListBox ein:

    Private Sub ListBox_Mitarbeiter_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If txtMAuswahl.Text <> "" Then
           ListBox_Mitarbeiter.BackColor = &HC0FFFF
       End If
    End Sub
  4. Setze die Initialfarbe der ListBox im Initialisierungsereignis:

    Private Sub UserForm_Initialize()
       ListBox1.BackColor = &H00C0E0FF
    End Sub
  5. Testen: Starte die UserForm und klicke auf die ListBox, um die Hintergrundfarbe zu ändern.


Häufige Fehler und Lösungen

  • Problem: Die Hintergrundfarbe ändert sich nicht.

    • Lösung: Stelle sicher, dass du den Code im richtigen Ereignis (MouseUp oder MouseDown) eingefügt hast. Manchmal kann es hilfreich sein, die Methode zu wechseln.
  • Problem: Die Auswahl bleibt markiert.

    • Lösung: Setze den Fokus auf ein anderes Steuerelement oder verwende DoEvents, um sicherzustellen, dass die Änderungen aktualisiert werden.

Alternative Methoden

Wenn die Änderung der Hintergrundfarbe über die ListBox nicht funktioniert, kannst du alternative Ansätze ausprobieren:

  • Verwende das MouseDown-Ereignis anstelle von MouseUp, um die Farbe direkt beim Klicken zu ändern:

    Private Sub ListBox_Mitarbeiter_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If txtMAuswahl.Text <> "" Then
           ListBox_Mitarbeiter.BackColor = &HC0FFFF
       End If
    End Sub
  • Nutze eine temporäre Variable, um den Status der Auswahl zu speichern und die Farbe entsprechend zu ändern.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Hintergrundfarbe mit verschiedenen Bedingungen ändern kannst:

  1. Farbe basierend auf dem ausgewählten Element:

    Private Sub ListBox_Mitarbeiter_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       Select Case ListBox_Mitarbeiter.ListIndex
           Case 0
               ListBox_Mitarbeiter.BackColor = &HFF0000 ' Rot
           Case 1
               ListBox_Mitarbeiter.BackColor = &H00FF00 ' Grün
           Case Else
               ListBox_Mitarbeiter.BackColor = &H0000FF ' Blau
       End Select
    End Sub
  2. Farbe zurücksetzen, wenn keine Auswahl getroffen wird:

    Private Sub ListBox_Mitarbeiter_Click()
       If ListBox_Mitarbeiter.ListIndex = -1 Then
           ListBox_Mitarbeiter.BackColor = &H00C0E0FF ' Zurück zur Standardfarbe
       End If
    End Sub

Tipps für Profis

  • Verwende vba .backcolor direkt in deiner UserForm, um die Lesbarkeit des Codes zu erhöhen.
  • Teste in verschiedenen Excel-Versionen, da sich die Unterstützung für bestimmte Eigenschaften ändern kann.
  • Nutze Debug.Print, um den Status deiner Variablen zu überprüfen, wenn etwas nicht wie erwartet funktioniert.

FAQ: Häufige Fragen

1. Warum funktioniert mein BackColor-Code nicht?
Möglicherweise wird das Ereignis nicht korrekt ausgelöst oder die ListBox hat den Fokus und akzeptiert keine Farbänderung. Überprüfe die Ereignisse und den Fokus.

2. Wie kann ich die Standardfarbe zurücksetzen?
Verwende das UserForm_Initialize-Ereignis, um die ListBox beim Start in die gewünschte Standardfarbe zu setzen.

3. Kann ich die Farbe dynamisch ändern?
Ja, du kannst die Farbe basierend auf Bedingungen ändern, indem du If-Bedingungen oder Select Case-Anweisungen verwendest.

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