vba-listview控件操作
Private Sub UserForm_Initialize()
Dim i
Dim itm As ListItem
Dim li
Me.ListView1.ColumnHeaders.Add 1, "Q", "QQ号", Me.ListView1.Width / 3 '添加第一列
Me.ListView1.ColumnHeaders.Add 2, "N", "昵称", Me.ListView1.Width / 3, lvwColumnCenter '添加第二列
Me.ListView1.ColumnHeaders.Add 2, "D", "地区", Me.ListView1.Width / 3, lvwColumnRight '添加第二列
Me.ListView1.View = lvwReport '显示外观
Me.ListView1.Gridlines = True '是否有表格线
'For i = 2 To [A65535].End(xlUp).Row '使用集合的方法添加
' Set itm = Me.ListView1.ListItems.Add(Text:=Cells(i, 1))
' Set li = itm.ListSubItems.Add(Text:=Cells(i, 2)) '集合添加,就是添加新的一列
' Set li = itm.ListSubItems.Add(Text:=Cells(i, 3)) '添加在上一句的后面
'
'Next
For i = 2 To [A65535].End(xlUp).Row '使用数组的方法添加
Set itm = Me.ListView1.ListItems.Add() '先添加一个行对象,是除开标题(colunmheaders)行的行对象
itm.Text = Cells(i, 1) '行对象的第一列
itm.SubItems(1) = Cells(i, 2) '行对像的第二列
itm.SubItems(2) = Cells(i, 3) '行对像的第三列
Next
'subitems是一个string 数组
'ListSubItems 是一个集合
'me.ListView1.ColumnHeaders.Remove "D" 删除key 是D的列,即此处的 地区 列
End Sub
'Me.ListView1.View = lvwIcon '普通视图
'Me.ListView1.View = lvwList '列表视图,上下排列,无表格线
'Me.ListView1.View = lvwSmallIcon '小图标视图
'Me.ListView1.View = lvwReport '报表视图,有标题,可心显示表格线
Me.ListView1.ListItems.Clear '清除所有列
'筛选功能其实就是写个判断,等于筛选框的值,再添加值即可
'从listview中输入数据到表格中时,按列方向循环
For i = 1 To Me.ListView1.ColumnHeaders.Count '取列标题个数开始循环,先取第一列的标题,,再是第二列,第三列
Cells(1, i) = Me.ListView1.ColumnHeaders(i)
For j = 1 To Me.ListView1.ListItems.Count '行的循环
If i = 1 Then
Cells(j + 1, i) = Me.ListView1.ListItems(j).Text
Else
Cells(j + 1, i) = Me.ListView1.ListItems(j).SubItems(i - 1)
End If
Next
Next
'选取的行输入到工作表中
Me.ListView1.SelectedItem '表示 正在选择的行
Me.ListView1.SelectedItem.Text '第一列的值
Me.ListView1.SelectedItem.SubItems (1) '第二列的值
Me.ListView1.SelectedItem.SubItems (2) '第三列的值
'添加红色字体行
直接用增加新的行
Set xxx = Me.ListView1.ListItems.Add()
xxx.SubItems(2) = 123
xxx.SubItems(3) = 234
xxx.ForeColor = RGB(255, 0, 0) '列表颜色。是第一列的颜色
xxx.Bold = True '粗体,也是第一列的
对于后面的要加色的话,用循环,且用集合对象才能设置颜色
For x = 2 To Me.ListView1.ColumnHeaders.Count - 1
xxx.ListSubItems(x).ForeColor = RGB(255, 0, 0)
xxx.ListSubItems(x).Bold = True
'批量删除选择的行,只针对listview,不删除数据源
Me.ListView1.ListItems.Remove Me.ListView1.SelectedItem.Index '删除单一行很简单
For i = Me.ListView1.ListItems.Count To 1 Step -1
If Me.ListView1.ListItems(i).Selected Then '不带复选框的选择
Me.ListView1.ListItems.Remove i
' If Me.ListView1.ListItems(i).Checked Then '带复选框的选择
End If
Next
'给行加复选框
Me.ListView1.CheckBoxes = True '就带上复选框
Me.ListView1.Sorted = True '允许排序
Me.ListView1.SortKey = Me.ListView1.ColumnHeader - 1 以第几列排序
Me.ListView1.SortOrder = lvwAscending '升序,另一个是降序