cadsys-chemnitz
Goto Top

Listbox Textfarbe

Folgendes Problem wie im Codebeispiel unten ersichtlich lese ich aus einem Excelfile eine Kundenliste aus und übertrage diese in eine Listbox.


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???

Content-Key: 135732

Url: https://administrator.de/contentid/135732

Printed on: April 26, 2024 at 13:04 o'clock

Member: SlainteMhath
SlainteMhath Feb 11, 2010 at 12:52:54 (UTC)
Goto Top
Moin,

mach doch mal aus
if a = 1 then Listbox1.SelectedItem = ForeColor.Red
ein
if a = 1 then Listbox1.SelectedItem.ForeColor = Color.Red
vielleich hilft das .)

lg,
Slainte
Member: Cadsys-Chemnitz
Cadsys-Chemnitz Feb 11, 2010 at 13:19:59 (UTC)
Goto Top
mach doch mal aus

if a = 1 then Listbox1.SelectedItem = ForeColor.Red

ein

if a = 1 then Listbox1.SelectedItem.ForeColor = Color.Red

vielleich hilft das .)
lg,
Slainte


Dann kommt nur folgende Meldung:

Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt.
Member: SlainteMhath
SlainteMhath Feb 11, 2010 at 13:34:13 (UTC)
Goto Top
(Begrüßungen sind wohl aus der mode, ja?)

Ach, ist das dsa standard Listbox Control von VB6? Dann geht das m.W. nicht. Ggfs gibts solche Controls noch zu kaufen. => google.

(ohne grüße)
Mitglied: 76109
76109 Feb 11, 2010 at 13:54:16 (UTC)
Goto Top
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.

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
Member: Cadsys-Chemnitz
Cadsys-Chemnitz Feb 12, 2010 at 07:09:55 (UTC)
Goto Top
Ok nach bisschen Recherge bei Tante Google ...

es geht tatsächlich nicht in einer Listbox, die Farbe eines einzelnen Elements anzupassen. Nur die allgemeine Farbe des gesamten Textes. Es gibt zwar eine Bastellösung, aber die ist älter und scheint mit aktuellen VB2008 nicht mehr zu funktionieren.

Ich werde das ganze jetzt etwas anders angehen und es mit einem Listview probieren da hab ich mehr möglichkeiten (Spalten,Farbe,Icons ... usw).

Ich danke Euch aber für Eure Hilfe besonders das Beispiel von Didi hat mich in einem anderen Zusammenhang auf ne Idee gebracht.