如何解决基于单元格值的Listview背景色或前色
是否有更好的方法来更改整个行的颜色?
For i = 2 To LRow
Set LstItem = UserForm1.lstInvoiceItems.ListItems.Add(Text:=rngdata.Cells(i,1).Value)
For j = 2 To ColCount
LstItem.ListSubItems.Add Text:=rngdata.Cells(i,j).Value
Next j
If rngdata.Cells(i,2) = "" Then
LstItem.ForeColor = vbRed
LstItem.ListSubItems.Item(1).ForeColor = vbRed
LstItem.ListSubItems.Item(2).ForeColor = vbRed
LstItem.ListSubItems.Item(3).ForeColor = vbRed
LstItem.ListSubItems.Item(4).ForeColor = vbRed
LstItem.ListSubItems.Item(5).ForeColor = vbRed
LstItem.ListSubItems.Item(6).ForeColor = vbRed
LstItem.ListSubItems.Item(7).ForeColor = vbRed
End if
Next i
解决方法
这是与列表视图一起使用的编辑版本。我对它进行了替换,目的是您可以在数据全部填充后或在数据更新/添加/编辑后才调用它。它将遍历整个列表视图,并根据第一个单元格值或子项为整个行着色(请参见注释掉的If行)
对于实际的颜色编码,您要查看项目而不是每个子项目-如果更改父项目的原色,则其所有子项都将继承相同的设置
Private Sub ColorCode()
For i = 0 To ListView1.Items.Count - 1 'you don't want it looking at the blank last line
If ListView1.Items(i).Text = 123 Then 'Change this to whatever critera you need to color code
'If ListView1.Items(i).SubItems(3).Text = 5 Then 'Alternatively if you want to go by your sub item for criteria
ListView1.Items.Item(i).ForeColor = Color.Red
End If
Next
End Sub
下面的原始答案:
我不确定100%是否可以将其调整为使用列表视图,但是如果可以将控件更改为datagridview,则可以使用以下代码:
For i = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(i).Cells(2).Value = "" Then
DataGridView1.Rows(i).DefaultCellStyle.BackColor = vbRed
End If
Next
根据您的应用程序在做什么,我建议在列表视图上使用datagridview
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。