列表框控件(ListBox),也是窗体中的高频控件,用于展示列表。 常用属性照旧,我们F2调出对象模型,然后输入ListBox,我们就得到了列表框所有的属性和方法,以及事件。 ColumnCount设置列表框中可以显示的列数。这也就意味着,一个列表框可以显示不止一列。这个属性默认为1。如果不小心设置为0,那即使设置过了其他属性,列表中也是空空如也。 BoundColumn既然有多列可以显示,那么如果选中了数据,列表框应该返回哪一列的数据呢? 使用BoundColumn可以决定选中了之后列表框返回的数据是在哪一列。 ListStyle指定列表的外观样式,默认的值是0,也就是就是显示纯文本,没有任何格式。当然也可是设置为1,显示为Option的样式。 MultiSelect指定是否可以选中多个条目。默认值为0,也就是只能选中单个条目。这时,ListBox的Value属性可以返回绑定列的值。MultiSelect也可以设置为1,允许选中多个条目。这时要注意,即使我们只选中了一个条目,ListBox的Value会返回Null。 当然也可以设置为2,设置为2就是说,我可以用Shift来进行快速选中多个条目。 RowSource指定列表框的数据源,这个属性是一个字符串属性。可以指定一个字符串格式的的Range,例如: Me.ListBox1.RowSource = 'sheet2!a2:f10' 也可以直接用名称来指定。如果我定义了A2到F10的名称为table,那么也可以这样引用: Me.ListBox1.RowSource = 'table' 如果想要在列表框中同时显示表头,那么可以将ColumnHead属性设置为True。在指定了RowSource之后,系统会自动的查找你设置数据源区域上面的一行作为表头。 List这是另外一个方法来指定数据源。List是一个数组,数组中的每一个元素都是一个列表项。当然,对于多列的List,我们可以为他指定一个二维数组。 下面这个例子把a2到f10单元格加入为列表框的数据源。 Dim aList
aList = Range('a2:f10')
Me.ListBox1.List = aList 这里要注意的是,用这种方法来设置数据源,即使ColumnHead设置为True,表头也不会显示。原因也很简单,系统知道你传入了一个数组,但不知道这个数组对应的是哪个Range,就没查找数据区域上面的一行了。 ListCount表示列表中有多少个列表项 ListIndex表示每个列表项在列表中所对应的索引。 Selected表示列表框中的列表项是否被选中。返回的是一个数组,数组元素的个数与列表中列表项的数目相同。 下面这个例子用来遍历并打印被选中的列表项的值。 Private Sub CommandButton1_Click()
Dim i%
For i = 0 To Me.ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Debug.Print ListBox1.List(i)
End If
Next i
End Sub 方法AddItem向列表中添加列表项。使用方法为: ListBox1.AddItem 'newitem' 这里要注意,如果列表已经设置了RowSource属性,调用AddItem方法会报错permission denied。 如果是要给多列列表添加其他数据的话,可以这样来添加: With ListBox1
.AddItem '人民币'
.List(.ListCount - 1, 2) = 100
End With 注意这里使用了ListBox的ListCount属性。 Clear用于清除列表框中所有的列表项。写法非常简单,例如: Private Sub CommandButton2_Click()
ListBox1.Clear
End Sub 总结一下
|
|
来自: L罗乐 > 《VBA基础入门教程》