ListView重复条目仅修改当前条目颜色的VBA问题求助
解决ListView仅修改新增条目颜色的问题
你的问题出在直接修改了ListView1.ForeColor——这个属性控制的是整个ListView控件的默认前景色,所以每次添加条目时,所有已存在的条目都会跟着变成你设置的颜色。
另外你尝试用li.ForeColor没效果,大概率是因为ListView的两个关键属性没设置对:
- View必须设为
lvwReport(报表视图) - FullRowSelect必须设为
True
修正后的代码如下:
Private Sub addtolv() Dim dupe As Boolean Dim li As ListItem ' note: RecordNumber writecolumn and LASTROW are globals dupe = False ' 先判断当前条目是否为重复项 If Application.WorksheetFunction.CountIf(Range(ThisWorkbook.writecolumn & "2:" & ThisWorkbook.writecolumn & CStr(LASTROW)), Range("B" & RecordNumber)) > 0 Then dupe = True End If With ListView1 ' 添加新条目 Set li = .ListItems.Add(, Worksheets("Sheet2").Range("B" & RecordNumber), Worksheets("Sheet2").Range("A" & RecordNumber), 0) li.SubItems(1) = Worksheets("Sheet2").Range("B" & RecordNumber) li.SubItems(2) = Worksheets("Sheet2").Range("C" & RecordNumber) li.SubItems(3) = Worksheets("Sheet2").Range("D" & RecordNumber) li.SubItems(4) = Worksheets("Sheet2").Range("E" & RecordNumber) li.SubItems(5) = RecordNumber ' 仅给当前新增的条目单独设置颜色 If dupe Then li.ForeColor = vbBlue Else li.ForeColor = vbBlack End If End With End Sub
额外设置要求
在用户窗体设计模式下,选中ListView1,在属性窗口里修改:
- 把
View属性改成3 - lvwReport - 把
FullRowSelect属性改成True
这样li.ForeColor才能正常生效,只会改变当前新增条目的颜色,不会影响之前的条目。
内容的提问来源于stack exchange,提问作者Richard Chism
相关产品推荐
相关产品推荐

