学习资源:《Excel VBA从入门到进阶》第59集 by兰色幻想
二、显示图标
刚开始就又遇到个问题,点击VBA控件Imagelist的自定义属性点击后出现如下错误:“类未注册。查找具有以下CLSID的对象:{7ebdaae2-8120-11cf-899f-00aa00688b10}。
解决方法是下载Msstkprp.dll并注册,具体操作见以下两个链接:
Excel excelvba问题-ExcelVBA程序开发-ExcelHome技术论坛 -club.excelhome.net ImageList控件点自定义后提示类未注册 - Excel VBA开发 - Excel精英培训网 - Powered by Discuz!www.excelpx.com解决完问题,继续学习,本篇显示图标,在上一篇设置列标题ColumnHeaders时,讲到了六个参数,最后一个是显示的图标。
listitem1.ColumnHeaders.Add 列数,key(一列的唯一标识),标题,宽度,对齐方式,显示的图标
- Imagelist控件的设置
要在Listview显示图标,首先我们要插入Imagelist控件。
在工具箱没有,去到附加控件找到Mircosoft ImageList Control 6.0(SP6), 并勾选确认。随后就能在工具箱看到了,我们选中它,并在窗体中建立一个。
选中窗体Imagelist控件,在属性中双击自定义行,设置图标的大小。
接下来选images,选择插入图片Insert Picture。它能选择的图片格式似乎很少,PNG的图片也识别不了,而ipeg格式的图标图也不好找,所以我用了看山的图来展示一下。(注意插入的图片大小不要太大)
图标的提取还要借助ImageList控件。图片加载到ImageList后会有序号(Index),可以用序号来表示图片。也可以手动改序号。
2. 提取图片
图标、小图标、列标题图标都从ImageList控件取,在程序的最开始写。
Icons属性(普通大小图标)
SmallIcons(小图标)
ColumnHeaderIcons属性(标题图标)
ListView1.Icons = ImageList1 '设置图标从imagelist中提取图片
ListView1.SmallIcons = ImageList1 '小图标
ListView1.ColumnHeaderIcons = ImageList1 '列标题图标
3. 设置列标题的第六个参数
listitem1.ColumnHeaders.Add 列数,key(一列的唯一标识),标题,宽度,对齐方式,显示的图标
最后显示的图标,可以直接写图标的索引值。例:
ListView1.ColumnHeaders.Add 1, , "QQ", ListView1.Width / 3, , 1 '列显示图标,编号1
ListView1.ColumnHeaders.Add 2, , "昵称", ListView1.Width / 3, lvwColumnCenter, 2
ListView1.ColumnHeaders.Add 3, , "地区", ListView1.Width / 3, , 3
4. 大图标和小图标
上面说了列标题的图标,是大图片,还可以在内容行显示小图标。(下一篇再细讲)
For i = 2 To 5
Set ITM = ListView1.ListItems.Add()
ITM.Text = Cells(i, 1)
ITM.SubItems(1) = Cells(i, 2)
ITM.SubItems(2) = Cells(i, 3)
ITM.SmallIcon = 4 '(小图标,在小图标视图下显示的图标)
Next i
汇总代码:
Private Sub UserForm_Initialize()
Dim i%
Dim ITM As ListItem
ListView1.Icons = ImageList1 '设置图标从imagelist中提取图片
ListView1.SmallIcons = ImageList1 '小图标
ListView1.ColumnHeaderIcons = ImageList1 '列标题图标
ListView1.ColumnHeaders.Add 1, , "QQ", ListView1.Width / 3, , 1 '列显示图标,编号1
ListView1.ColumnHeaders.Add 2, , "昵称", ListView1.Width / 3, lvwColumnCenter, 2
ListView1.ColumnHeaders.Add 3, , "地区", ListView1.Width / 3, , 3
ListView1.View = lvwReport
ListView1.Gridlines = True
For i = 2 To 5
Set ITM = ListView1.ListItems.Add()
ITM.Text = Cells(i, 1)
ITM.SubItems(1) = Cells(i, 2)
ITM.SubItems(2) = Cells(i, 3)
ITM.SmallIcon = 4 '(小图标,在小图标视图下显示的图标)
Next i
End Sub
三、视图模式
我们之前所用到的视图模式一直是报表模式:
ListView1.View = lvwReport
其实除了报表模式,还有三种视图模式:图标视图lvwIcon、小图标视图vwSmallIcon、列表视图lvwSmallIcon。效果如下所示,以后能按需使用。