Listbox Textfarbe
Folgendes Problem wie im Codebeispiel unten ersichtlich lese ich aus einem Excelfile eine Kundenliste aus und übertrage diese in eine Listbox.
Das soweit auch gar kein Problem. Nun muss ich aber die Kunden in Rot oder Blau einfärben je nachdem ob die Kunden einen Wartungsvertrag haben oder nicht.
Das ganze könnte so aussehen:
Soweit so gut nur funktioniert es nicht, es kommt zwar keinerlei Fehlermeldungen. Also das Programm läuft so aber die Textfarbe wird nicht geändert.
Wenn ich
färbt er mir immer den gesamten Text der Listbox ein.
Weis einer von Euch rat wo ich da den ansetzen kann???
Dim Pfad As Excel.Application
Dim Kundenzahl As Integer
Dim a As Integer
Dim x As Integer
Pfad = CreateObject("Excel.Application")
Pfad.Workbooks.Open("v:\Data\Center000.xls")
Kundenzahl = Pfad.ActiveWorkbook.ActiveSheet.Range("d3").Value
ListBox1.BeginUpdate()
For x = 1 To Kundenzahl
ListBox1.Items.Add(Pfad.ActiveWorkbook.ActiveSheet.Range("c" & 9 + x).Value)
Next x
ListBox1.EndUpdate()
ListBox1.SetSelected(0, True)
Pfad.Application.DisplayAlerts = False
Pfad.ActiveWorkbook.Saved = False
Pfad.ActiveWorkbook.Close()
Pfad.Application.DisplayAlerts = True
Das soweit auch gar kein Problem. Nun muss ich aber die Kunden in Rot oder Blau einfärben je nachdem ob die Kunden einen Wartungsvertrag haben oder nicht.
Das ganze könnte so aussehen:
Dim Pfad As Excel.Application
Dim Kundenzahl As Integer
Dim a As Integer
Dim x As Integer
Pfad = CreateObject("Excel.Application")
Pfad.Workbooks.Open("v:\Data\Center000.ini")
Kundenzahl = Pfad.ActiveWorkbook.ActiveSheet.Range("d3").Value
ListBox1.BeginUpdate()
For x = 1 To Kundenzahl
a = Pfad.ActiveWorkbook.ActiveSheet.Range("e" & 9 + x).Value
ListBox1.Items.Add(Pfad.ActiveWorkbook.ActiveSheet.Range("c" & 9 + x).Value)
ListBox1.SetSelected(x - 1, True) 'Es heist x-1 weil der Index des ersten Listboxeintrages 0 ist
if a = 1 then Listbox1.SelectedItem = ForeColor.Red
Next x
ListBox1.EndUpdate()
ListBox1.SetSelected(0, True)
Pfad.Application.DisplayAlerts = False
Pfad.ActiveWorkbook.Saved = False
Pfad.ActiveWorkbook.Close()
Pfad.Application.DisplayAlerts = True
Soweit so gut nur funktioniert es nicht, es kommt zwar keinerlei Fehlermeldungen. Also das Programm läuft so aber die Textfarbe wird nicht geändert.
Wenn ich
ListBox1.Forecolor = Color.Red eingebe
färbt er mir immer den gesamten Text der Listbox ein.
Weis einer von Euch rat wo ich da den ansetzen kann???
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135732
Url: https://administrator.de/contentid/135732
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Cadsys-Chemnitz!
Also, sowas wie " Color.Red" ist mir unbekannt.
Mit dem kleinen Beispiel kannst Du z.B. die Farbtabelle des Aktiven Workbooks auslesen.
Die Funktion gibt ein Array mit 40 Farben aus der Sheet Füll/Textfarben-Tabelle + 16 zusätzlichen Farben (siehe Optionen Farbe) zurück . Allerdings stimmt die Reihenfolge nicht mit der Tabelle überein, so ist z.B. ROT die Nr. 3 bzw. Farb-Index 3. Zurückgegeben wird ein 24-Bit Farbwert.
Ob allerdings in einer ListBox ein einzelnes Item mit einer eigenen Farbe belegt werden kann, weiß ich nicht?
Gruß Dieter
Also, sowas wie " Color.Red" ist mir unbekannt.
Mit dem kleinen Beispiel kannst Du z.B. die Farbtabelle des Aktiven Workbooks auslesen.
Die Funktion gibt ein Array mit 40 Farben aus der Sheet Füll/Textfarben-Tabelle + 16 zusätzlichen Farben (siehe Optionen Farbe) zurück . Allerdings stimmt die Reihenfolge nicht mit der Tabelle überein, so ist z.B. ROT die Nr. 3 bzw. Farb-Index 3. Zurückgegeben wird ein 24-Bit Farbwert.
Sub Test()
Dim Farbe As Long, i As Integer
For i = 1 To 56
Farbe = ActiveWorkbook.Colors(i)
Next
Farbe = ActiveWorkbook.Colors(3) 'Rückgabe Long-Farbwert Rot
'.ForeColor = ActiveWorkbook.Colors(3)
End Sub
Ob allerdings in einer ListBox ein einzelnes Item mit einer eigenen Farbe belegt werden kann, weiß ich nicht?
Gruß Dieter