大家好,我们今日继续讲解VBA代码解决方案的第103讲内容:VBA中使用类似于工作表的Listview控件来显示你的任务。ListView控件是VBA程序开发中的常用控件,可以用来显示各项带图标的列表,也可以用来显示带有子项的列表。Listview控件是微软通用控件MSCOMCTL.OCX中的一员,因其美观、易用,是VBA使用者最常用的控件之一。
Listview控件的应用随处可见,比如你的计算机系统中使用的资源管理器,就是Treeview和Listview做出来的,资源管理器的左边是Treeview控件,右边是Listview。Listview有4种视图,Win7系统的资源管理器有7种显示方式,XP有5种,其中大图标对应Listview的lvwIcon,小图标对应lvwSmallIcon,列表对应lvwList,详细信息则对应lvwReport。
一:Listview控件的View属性,这个属性决定在列表中控件使用何种视图显示项目,语法如下:object.view [= value]
参数object是必须的,对象表达式,listview控件。
参数value是必须的,指定控件外观的整数或常数:
lvwicon 0 图标
lvwsmallicon 1 小图标
lvwlist 2 列表
lvwreport 3 报表
二 ColumnHeader对象。是ListView控件中包含标题文字的项目。应用于ColumnHeader对象的Add方法语法如下:
object.ColumnHeader.Add(index,key,text,width,alignment)
其中参数text代表标题文字,参数width代表标题的列宽,参数alignment代表列标题中文本对齐方式。Listview控件中文本的对齐方法有三种,
lvwColumnLeft 0 文本向左对齐。(缺省值)
lvwColumnRight 1 文本向右对齐。
lvwColumnCenter 2 文本居中对齐。
在Listview控件中第一列的文本对齐方式只能设置为左对齐。
三 ListItem对象。是ListView控件的项目,应用于ListItem对象的Add方法语法如下:
ListItems.Add(index,key,text,icon,smallIcon)
其中参数text代表添加的项目内容。
四实测实例:使用Listview控件在用户窗体中显示数据列表,我们先建立一个窗体:
代码如下:
Private Sub UserForm_Initialize()
Dim Itm As ListItem
Dim r As Integer
Dim c As Integer
With ListView1
.ColumnHeaders.Add , , "名称", 50, 0
.ColumnHeaders.Add , , "库位1", 50, 1
.ColumnHeaders.Add , , "库位2", 50, 1
.ColumnHeaders.Add , , "库位3", 50, 1
.ColumnHeaders.Add , , "库位4", 50, 1
.ColumnHeaders.Add , , "库位5", 50, 1
.ColumnHeaders.Add , , "库位6", 50, 1
.View = lvwReport
.Gridlines = True
For r = 2 To Sheet1.[A65536].End(xlUp).Row
Set Itm = .ListItems.Add()
Itm.Text = Space(2) & Sheet1.Cells(r, 1)
For c = 1 To 6
Itm.SubItems(c) = Format(Sheet1.Cells(r, c 1), "##,#,0.0")
Next
Next
End With
Set Itm = Nothing
End Sub
代码截图:
代码解析:窗体的初始化事件,在窗体显示时将工作表中数据显示在Listview控件中。
第6行到第12行代码,使用ColumnHeader对象的Add方法在Listview控件中添加标题列,并设置列标题、列宽和文本对齐方式。
第13行代码,设置Listview控件的View属性为lvwReport,使Listview控件显示为报表型。
第14行代码,设置Listview控件的Gridlines属性为True,显示网格线。只有在将View属性设置为lvwReport时才能显示网格线,否则Gridlines属性无效。
第16行代码,使用ListItem对象的Add方法在Listview控件中添加项目。
第17行代码,添加行标题。ListItem对象的text属性代表Listview控件的第一列内容,因为Listview控件的第一列的文本对齐方式只能设置为左对齐,所以在添加时使用Space函数插入两个空格,使行标题达到居中显示的效果。
第18行到20行代码,继续添加其他列的内容。Listview控件其他列的项目需要使用SubItems属性来添加。
运行后如下图:
这时就可以看到EXCEL中的资料显示在台账体统的界面了。
今日内容回向:
1 如何让工作表数据显示在控件中?
1 ListView控件是如何显示数据的?