|
楼主 |
发表于 2023-4-12 11:28
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
三、常用方法
1、Add:添加ColumnHeaders或ListItems。
(1)、 添加ColumnHeaders(列标题)。
语法:ListView1.ColumnHeaders.Add 序号(列号),key(一列的唯一标识),列标题,列宽度,列内容的对齐方式,使用的图标序号。
有六个参数:
①序号:要设置第几列
②key(一列的唯一标识):自己设置一个值标记这一列,比如设置一个字母。
③列标题:列标题具体内容
④列宽度:列宽,可以按ListView宽度除以列数,比如写为 “ListView1.Width / 3”
⑤对齐方式:有三种,lvwColumnCenter居中对齐,lvwColumnLeft左对齐,lvwColumnRight右对齐,其中第一列只能左对齐而不能其它对齐。
⑥使用的图标序号:从Imagelist控件获取图片并显示。
例:
手动添加标题
Me.ListView1.ColumnHeaders.Add 1, "Q", "QQ号", ListView1.Width / 3,lvwcolumnleftter
Me.ListView1.ColumnHeaders.Add 2, "N", "昵称", ListView1.Width / 3, lvwcolumncenter
Me.ListView1.ColumnHeaders.Add 3, "D", "地区", ListView1.Width / 3, lvwcolumnright
单元格区域添加标题
brr = Sheet1.[C1:J1]
Me.ListView1.ColumnHeaders.Add 1, "T1", brr(1, 1), ListView1.Width / UBound(brr, 2), lvwcolumnleftter
For i = 2 To UBound(brr, 2)
Me.ListView1.ColumnHeaders.Add i, "T" & i, brr(1, i), ListView1.Width / UBound(brr, 2), lvwColumnCenter
Next
Me.ListView1.View = 3 '报表方式显示
(2)、 添加ListItems(项目列表)。
使用SubItems数组添加数据,注意:SubItems(1)为第二列,第一列为Text。添加数据时,首先要添加一ListItems是行对象的集合,然后使用循环,
把单元格数值赋值给Subitem。Set ITM = ListView1.ListItems.Add(),相当于ListView末尾添加一空行。
例:以Sheet1表C:J列(共8列)为例
For i = 1 To UBound(brr)
Set itm = Me.ListView1.ListItems.Add()
itm.Text = brr(i, 1)
For j = 2 To UBound(brr, 2)
itm.SubItems(j - 1) = brr(i, j)
Next
Next
(3)、 使用Listsubitems集合添加数据,与SubItems不同,Listsubitems在添加行对象时,直接可以添加一行,然后添加的每一行使用对行对象增加一行的方式进行赋值。
last = Sheet1.Cells(Rows.Count, "C").End(xlUp).Row
brr = Sheet1.Range("C2:J" & last).Value
For i = 1 To UBound(brr)
Set lst = Me.ListView1.ListItems.Add(Text:=brr(i, 1))
For j = 2 To UBound(brr, 2)
Set li = lst.ListSubItems.Add(Text:=brr(i, j))
Next
Next i
注意:SubItems和ListSubItems的区别,SubItems是一个string类型的数组,ListSubItems是一个集合。
2、ListItems:项目列表,设置或获取项目列表值
(1)、获取Text:arr(1) = Me.ListView1.ListItems(i).Text、设置Text:Me.ListView1.ListItems(i).Text = "66.56"
(2)、获取SubItems:arr(j) = Me.ListView1.ListItems(i).SubItems(j - 1)、设置SubItems:Me.ListView1.ListItems(i).SubItems(j - 1) = "66.56"
例:从列表导出数据至字典:导出复选框为True的行数据。
Dim d As Object, arr(), i&, j&
Set d = CreateObject("Scripting.Dictionary")
If Me.ListView1.ListItems.Count = 0 Then Exit Sub
For i = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems(i).Checked Then
ReDim arr(1 To Me.ListView1.ColumnHeaders.Count)
arr(1) = Me.ListView1.ListItems(i).Text
For j = 2 To Me.ListView1.ColumnHeaders.Count
arr(j) = Me.ListView1.ListItems(i).SubItems(j - 1)
Next
k = k + 1
d(k) = arr
End If
Next
If k = 0 Then
MsgBox "无检索数据!"
Exit Sub
End If
3、Clear:清除数据
Me.ListView1.ColumnHeaders.Clear '清空所有行,包括标题
Me.ListView1.ListItems.Clear '清空项目(除标题外所有行)
4、Remove:移除数据,逐行或逐列移除数据。移除行时不判断复选框,如果当前行不是最后一行移除后下一行成为当前行,否则最后一行成为当前行。
Me.ListView1.ListItems.Remove Me.ListView1.SelectedItem.Index '移除当前选中的行(单行)
Me.ListView1.ColumnHeaders.Remove "Q" '移除列用之前设置的key来标识,移除key是Q的列数据
5、SelectedItem:所选项目,返回鼠标点击的信息。
Me.ListView1.SelectedItem '表示 正在选择的行,返回结果和.Texe一样,第一列的值,
Me.ListView1.SelectedItem.Text '第一列的值
Me.ListView1.SelectedItem.SubItems(1) '第二列的值,也可用ListSubItems(1)
Me.ListView1.SelectedItem.SubItems(2) '第三列的值,也可用ListSubItems(2)
Me.ListView1.SelectedItem.Checked '返回选中行的复选框状态
Me.ListView1.SelectedItem.Index '返回选中行号
Me.ListView1.SelectedItem.Top '返回选中行与控件顶部的距离
Me.ListView1.SelectedItem.Left '返回选中行与控件左边界的距离
Me.ListView1.SelectedItem.Height '返回选中行的高度
Me.ListView1.SelectedItem.Width '返回选中行的宽度
6、Checked:检查,判断指定行(i)的复选框是否被选中,True(值等于1)表示选中,False(值等于0)表示没选中。
复选框可以多行被选中,用于列表的多选操作。
Me.ListView1.ListItems(i).Checked = True
7、Selected:选择,判断指定行(i)是否为当前选中行,True(值等于1)表示是当前行,False(值等于0)不是当前行。
Checked和Selected不同在于Checked是多选行,而Selected是单选行,也就是任何时候只有一行被Selected。
Me.ListView1.ListItems(i).Selected
8、Count:统计行或列总数
Me.ListView1.ListItems.Count '返回列表总行数,不包括标题ColumnHeaders
Me.ListView1.ColumnHeaders.Count '返回列表总列数,包括Text和SubItems
|
|