Изменение цвета переднего плана в Listview в зависимости от значения excel vba - PullRequest
0 голосов
/ 10 ноября 2018

Надеюсь, вы мне поможете ... У меня есть данные, отображаемые в моем списке. Заголовки столбцов:

СТРОКА ИДЕНТИФИКАТОР ПЕРСОНАЛА ДОСТАВКА ПОГРУЗКА НА МЕСТУ СУМКИ СОСТОЯНИЯ - всего 10 столбцов

Я хочу, чтобы основной цвет в моем столбце СОСТОЯНИЕ зависит от значения. значение может быть PAID или UNPAID , если PAID , то цвет должен быть зеленым, а если UNPAID , то цвет должен быть красным.

У меня есть этот код, но он не работает для меня, кто-нибудь мне поможет? Заранее спасибо.

Private Sub UserForm_Activate()

Dim C As Long
Dim i As Long
Dim R As Long

ListView1.View = lvwReport
ListView1.HideSelection = False
ListView1.FullRowSelect = True
ListView1.HotTracking = True
ListView1.HoverSelection = False

ListView1.ColumnHeaders.Add Text:="Row", Width:=40

  For C = 1 To 12
    ListView1.ColumnHeaders.Add Text:=Cells(1, C).Text
    ComboBox1.AddItem Cells(1, C).Text
  Next C

**' |In this part of my code is not working|**
Dim Item    As ListItem
Dim counter As Long

For counter = 1 To listView1.ListItems.Count
    Set Item = listView1.ListItems.Item(counter)
    If Item.SubItems(10) = "Paid" Then
        listView1.ListItems.Item(counter).ListSubItems(10).ForeColor = vbGreen
    End If
    If Item.SubItems(10) = "Unpaid" Then
        listView1.ListItems.Item(counter).ListSubItems(10).ForeColor = VBRed


Next counter


End Sub

1 Ответ

0 голосов
/ 10 ноября 2018

listsubitime должно быть 9, поскольку номера индексов начинаются с 0. В моем тесте это работает хорошо.

enter image description here

Private Sub UserForm_Activate()

Dim C As Long
Dim i As Long
Dim R As Long
Dim li As ListItem

ListView1.View = lvwReport
ListView1.HideSelection = False
ListView1.FullRowSelect = True
ListView1.HotTracking = True
ListView1.HoverSelection = False

ListView1.ColumnHeaders.Add Text:="Row", Width:=40

  For C = 1 To 12
    ListView1.ColumnHeaders.Add Text:=Cells(1, C).Text
    ComboBox1.AddItem Cells(1, C).Text
  Next C
Dim vDB
vDB = Range("a1").CurrentRegion
For i = 2 To UBound(vDB, 1)
    Set li = ListView1.ListItems.Add
    For j = 1 To UBound(vDB, 2)
    With li
        .Text = i
        .ListSubItems.Add , , vDB(i, j)
    End With
    Next j
Next i
'**' |In this part of my code is not working|**
Dim Item    As ListItem
Dim counter As Long

For counter = 1 To ListView1.ListItems.Count
    Set Item = ListView1.ListItems.Item(counter)
    If Item.SubItems(9) = "Paid" Then
        ListView1.ListItems.Item(counter).ListSubItems(9).ForeColor = vbGreen
    End If
    If Item.SubItems(9) = "Unpaid" Then
        ListView1.ListItems.Item(counter).ListSubItems(9).ForeColor = vbRed
    End If

Next counter


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...