网上的实现方法大多是这三种:
2、给单元格/Shape添加颜色后,复制Range和Shapes对象给剪贴板,然后保存成图片,需要WinAPI
3、对ListItem子类化后进行重绘。这是原来Vb用的方法,vba里貌似没人用
下面的方法1、2与上面的方法2相似,方法3即上面的方法3。当然还可以通过调用整个控件hdc在内存中作图,但和方法3一样需要调用WinAPI
1、创建ChartObjects对象,并在里面添加不同颜色的shape
Sub SetLvBColor(Lv As ListView, Count&, Optional BColor& = &HFFFFFF)
Dim iShape As Shape
Static iChart As ChartObject
If Lv.ListItems.Count = 1 Then Set iChart = ActiveSheet.ChartObjects.Add(0, 0, Lv.Width, Lv.ListItems(1).Height * Count)
With iChart.Chart.Shapes.AddShape(msoShapeRectangle, 0, Lv.ListItems(1).Height * (Lv.ListItems.Count - 1), Lv.Width, Lv.ListItems(1).Height * (Count - Lv.ListItems.Count + 1))
.Line.Visible = msoFalse
.Fill.ForeColor.RGB = BColor
End With
If Lv.ListItems.C