Results 1 to 13 of 13

Thread: Change the color of text in a listbox based upon a certain criteria

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #9
    VBAX Master
    Joined
    Jul 2006
    Location
    Belgium
    Posts
    1,285
    Location

    Listbox items with different colour based on certain criteria

    Quote Originally Posted by xacis
    As title, how can I change the color of text in a listbox based upon a certain criteria? For example, there is four columns in the listbox and the second column contains the numbers. If the number of certain row > 1, I want the text of that row change to red color. How can I do that?

    Thanks for your attention.


    xacis
    Hi Xacis,

    I have found a way to accomplish this task. Instead of using a listbox I've used listview. Add this control by right clicking on the workpalette and choose 'Microsoft Listview Control 6.0 (SP4)'

    Set following code in the userform1.initialize

    Option Explicit 'this one above the userform1.initialize
    
    Private Sub UserForm_Initialize()
        Dim startrow As Integer 'beginning of data
        Dim endrow As Integer 'end of data
        Dim pos As Integer 'actual row
        Dim lv_item As Integer 'no of the listview item
        Dim counting As Integer 'loop for processing all items
        startrow = 2
        ' endrow = xlLastRow("Sheet1")
        ' xllastrow is a function found at this forum otherwise use a number for testing
        ' Sheet1 is the name of your sheet
        pos = 2
        lv_item = 1
        With ListView1
            ' gives me headers at the top
            .View = lvwReport
            ' defining the columnheaders
            With .ColumnHeaders
                .Clear
                .Add , , "Column 1", 60
                .Add , , "Column 2", 60
                .Add , , "Column 3", 60
                .Add , , "Column 4", 60
            End With
            .HideColumnHeaders = False
            .Appearance = cc3D
            .FullRowSelect = True
            For counting = startrow To endrow
                If Worksheets("Sheet1").Range("B" & pos).Value > 1 Then
                    .ListItems.Add , , Worksheets("Sheet1").Range("A" & pos)
                    .ListItems(lv_item).ForeColor = RGB(255, 0, 0)
                    .ListItems(lv_item).ListSubItems.Add , , Worksheets("Sheet1").Range("B" & pos)
                    .ListItems(lv_item).ListSubItems.Add , , Worksheets("Sheet1").Range("C" & pos)
                    .ListItems(lv_item).ListSubItems.Add , , Worksheets("Sheet1").Range("D" & pos)
                Else
                    .ListItems.Add , , Worksheets("Sheet1").Range("A" & pos)
                    .ListItems(lv_item).ForeColor = RGB(0, 0, 0)
                    .ListItems(lv_item).ListSubItems.Add , , Worksheets("Sheet1").Range("B" & pos)
                    .ListItems(lv_item).ListSubItems.Add , , Worksheets("Sheet1").Range("C" & pos)
                    .ListItems(lv_item).ListSubItems.Add , , Worksheets("Sheet1").Range("D" & pos)
                    lv_item = lv_item + 1
                    pos = pos + 1
                End If
            Next counting
        End With
    End Sub
    Charlize
    Last edited by Aussiebear; 01-08-2025 at 07:39 AM. Reason: Code changes implemented as noted below

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •