|
列表框控件(ListBox),也是窗體中的高頻控件,用于展示列表。 常用屬性照舊,我們F2調(diào)出對象模型,然后輸入ListBox,我們就得到了列表框所有的屬性和方法,以及事件。 ColumnCount設置列表框中可以顯示的列數(shù)。這也就意味著,一個列表框可以顯示不止一列。這個屬性默認為1。如果不小心設置為0,那即使設置過了其他屬性,列表中也是空空如也。 BoundColumn既然有多列可以顯示,那么如果選中了數(shù)據(jù),列表框應該返回哪一列的數(shù)據(jù)呢? 使用BoundColumn可以決定選中了之后列表框返回的數(shù)據(jù)是在哪一列。 ListStyle指定列表的外觀樣式,默認的值是0,也就是就是顯示純文本,沒有任何格式。當然也可是設置為1,顯示為Option的樣式。 MultiSelect指定是否可以選中多個條目。默認值為0,也就是只能選中單個條目。這時,ListBox的Value屬性可以返回綁定列的值。MultiSelect也可以設置為1,允許選中多個條目。這時要注意,即使我們只選中了一個條目,ListBox的Value會返回Null。 當然也可以設置為2,設置為2就是說,我可以用Shift來進行快速選中多個條目。 RowSource指定列表框的數(shù)據(jù)源,這個屬性是一個字符串屬性??梢灾付ㄒ粋€字符串格式的的Range,例如: Me.ListBox1.RowSource = 'sheet2!a2:f10'也可以直接用名稱來指定。如果我定義了A2到F10的名稱為table,那么也可以這樣引用: Me.ListBox1.RowSource = 'table'如果想要在列表框中同時顯示表頭,那么可以將ColumnHead屬性設置為True。在指定了RowSource之后,系統(tǒng)會自動的查找你設置數(shù)據(jù)源區(qū)域上面的一行作為表頭。 List這是另外一個方法來指定數(shù)據(jù)源。List是一個數(shù)組,數(shù)組中的每一個元素都是一個列表項。當然,對于多列的List,我們可以為他指定一個二維數(shù)組。 下面這個例子把a2到f10單元格加入為列表框的數(shù)據(jù)源。 Dim aList
aList = Range('a2:f10')
Me.ListBox1.List = aList這里要注意的是,用這種方法來設置數(shù)據(jù)源,即使ColumnHead設置為True,表頭也不會顯示。原因也很簡單,系統(tǒng)知道你傳入了一個數(shù)組,但不知道這個數(shù)組對應的是哪個Range,就沒查找數(shù)據(jù)區(qū)域上面的一行了。 ListCount表示列表中有多少個列表項 ListIndex表示每個列表項在列表中所對應的索引。 Selected表示列表框中的列表項是否被選中。返回的是一個數(shù)組,數(shù)組元素的個數(shù)與列表中列表項的數(shù)目相同。 下面這個例子用來遍歷并打印被選中的列表項的值。 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'這里要注意,如果列表已經(jīng)設置了RowSource屬性,調(diào)用AddItem方法會報錯permission denied。 如果是要給多列列表添加其他數(shù)據(jù)的話,可以這樣來添加: With ListBox1
.AddItem '人民幣'
.List(.ListCount - 1, 2) = 100
End With注意這里使用了ListBox的ListCount屬性。 Clear用于清除列表框中所有的列表項。寫法非常簡單,例如: Private Sub CommandButton2_Click()
ListBox1.Clear
End Sub總結一下
|
|
|
來自: L羅樂 > 《VBA基礎入門教程》