前面介紹了文本框,以及列表框的常用屬性和方法,。我們所沒有介紹的是,,這兩個(gè)控件幸福地生活在了一起,然后呢,?當(dāng)然有然后了,,ComboBox就出世了,! ComboBox,,中文叫復(fù)合框,顧名思義,,是把文本框和列表框的特性結(jié)合起來(lái)的一種控件,。這個(gè)控件,既可以輸入文字,,也可以像列表框一樣選擇選項(xiàng),。 屬性ComboBox的很多屬性,例如List,,RowSource,,BoundColumn,ColumnCount是和ListBox一樣的,,這里就不再做詳細(xì)解釋,。 同樣的,MaxLength,,SelStart,,SelLength這些屬性和TextBox中的也是一樣的,。 另外,ComboBox的AddItem 和 Clear方法,,也是和ListBox一樣的,。 當(dāng)然,作為一個(gè)獨(dú)立的控件,,ComboBox也有自己特定的屬性,,在這里仔細(xì)研究一下。 限制輸入作為一個(gè)高貴的ComboBox,,如果要摒棄TextBox的血統(tǒng),,也就是不能在框里輸入文字,可以由這么兩種方式: MatchRequired這是一個(gè)布爾變量,,可以在F4調(diào)出ComboBox的屬性然后進(jìn)行設(shè)置,。設(shè)置為True之后,當(dāng)ComboBox失去焦點(diǎn)時(shí),,ComboBox的值必須是他的列表項(xiàng)中的一個(gè),。否則,即使ComboBox為空,,也會(huì)報(bào)錯(cuò),。 Style使用MatchRequired這種設(shè)置方法,雖然起到了限制作用,,但還是存在用戶把ComboBox中的數(shù)據(jù)刪除留空,,然后報(bào)錯(cuò)的情況。那么如何避免呢,?
代碼檢查當(dāng)然,我們也可以通過代碼來(lái)檢查用戶輸入的到底是不是有效數(shù)據(jù),。這里會(huì)用到ListIndex屬性,。 我在這里先定義了一個(gè)叫做CboCurrency的ComboBox,然后用他的Exit事件: Private Sub CboCurrency_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If CboCurrency.ListIndex = -1 Then MsgBox 'invalid data !', vbCritical vbOKOnly
End Sub TextColumn用于設(shè)定Text屬性返回哪一列的數(shù)據(jù),。默認(rèn)是-1,,也就是ComboBox的文本顯示第一列的數(shù)據(jù)。如下圖所示: 如果我們把這個(gè)數(shù)字設(shè)置為2(當(dāng)然前提是ComboBox的columncount也要設(shè)置為2,,并且正確對(duì)RowSource進(jìn)行賦值),,那么我們就會(huì)發(fā)現(xiàn)ComboBox的文本顯示的是第二列的值,。 Text在TextBox里,Text屬性和Value值相同,。但是在ComboBox里,,Value返回的是BoundColumn的值,而Text返回的是ComboBox的文本框里顯示的值,。這個(gè)是有區(qū)分的,,不一定相同。 Column這個(gè)屬性用于引用ComboBox中指定行和列的某個(gè)值,。還是以上面的ComboBox為例,,如果我要引用第二行的第一列和第二列的值(也就是澳大利亞元和100),那么我可以這樣寫: Private Sub CommandButton1_Click()
With CboCurrency
Debug.Print .Column(0, 0), .Column(1, 0)
End With
End Sub
總結(jié)一下
|
|
來(lái)自: L羅樂 > 《VBA基礎(chǔ)入門教程》