我终于解决了这个问题。因为我没有找到任何可用的来源。
1 回答
0
我用两个步骤解决了它。
用数据填充列表视图
然后逐行着色各个数据。
所以这是对我有用的代码。Private Sub UserForm_Initialize() 'Filling with data lrow = ThisWorkbook.Sheets(1).Range("A99999").End(xlUp) + 1 With ListView1 .View = lvwReport .FullRowSelect = True .LabelEdit = lvwManual .Appearance = cc3D With .ColumnHeaders .Add , , "column1", 16 .Add , , "column2", 50 .Add , , "column3", 75 .Add , , "column4", 75 .Add , , "column5", 55 .Add , , "column6", 60 .Add , , "column7", 70 .Add , , "column8", 70 .Add , , "column9", 70 .Add , , "column10", 70 End With For i = 2 To lrow Set li = .ListItems.Add(, , Sheets(1).Cells(i, 1).Text)'this is the first column 'these are the sub columns li.ListSubItems.Add , , Sheets(1).Cells(i, 2).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 3).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 4).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 5).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 6).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 7).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 8).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 9).Text li.ListSubItems.Add , , Sheets(1).Cells(i, 10).Text Next I End With ListView1_AfterUpdate End Sub Private Sub ListView1_AfterUpdate() 'the actual coloring Dim x, y, r, c As Integer r = ListView1.ListItems.Count c = ListView1.ColumnHeaders.Count - 1 For y = 1 To c For x = 2 To r If Sheets(1).Cells(x, 20) <> "" Then 'condition for coloring ListView1.ListItems(x - 1).ListSubItems(y).ForeColor = RGB(150, 0, 30) Else ListView1.ListItems(x - 1).ListSubItems(y).ForeColor = vbBlack End If Next Next x = Empty For x = 2 To r 'It is required since it distinguishes listitems and listsubitems. If Sheets(1).Cells(x, 20) <> "" Then ListView1.ListItems(x - 1).ForeColor = RGB(150, 0, 30) Else ListView1.ListItems(x - 1).ForeColor = vbBlack End If Next End Sub
于 2021-02-04T08:10:30.473 回答