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