小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VBA知識(shí)庫(kù):列表框控件ListBox使用技巧,常用屬性與方法

 冷茶視界 2024-04-29 發(fā)布于江蘇

內(nèi)容提要

列表框控件ListBox的常用屬性與方法大家好,我是冷水泡茶,我們已經(jīng)分享過以下幾個(gè)控件的基礎(chǔ)知識(shí),可以點(diǎn)擊直達(dá)查看:

【用戶窗體UserForm】【命令按鈕CommandButton】【文本框TextBox】【標(biāo)簽Label】【復(fù)合框ComboBox】【復(fù)選框CheckBox】【選項(xiàng)按鈕OptionButton】今天我們一起來了解一下【ListBox】列表框控件。關(guān)于ListBox的案例,我們也分享過不少,感興趣的朋友可以參考:

(1)TextBox+ListBox輸入逐步提示

(2)中醫(yī)診所收費(fèi)系統(tǒng)ListBox版

(3)多列下拉列表:生產(chǎn)加工單BOM表

(4)多級(jí)聯(lián)動(dòng)下拉列表:省、市、區(qū)縣行政區(qū)劃列表錄入

(5)有人說“比下拉菜單快10倍,這才是Excel中NO.1的輸入方法”!

(6)入庫(kù)單:動(dòng)態(tài)添加數(shù)據(jù)驗(yàn)證、日期控件、ListBox下拉框選擇錄入ListBox是一個(gè)比較常見的控件,相對(duì)來說,功能比【文本框TextBox】要復(fù)雜一些,如果與【復(fù)合框ComboBox】相比,各有所長(zhǎng),可謂不分伯仲吧,復(fù)合框可以看作是文本框與列表框的結(jié)合。

一、列表框基本設(shè)置,各種屬性:

1、Name,列表框的初始Name為“ListBox1”。小提示:我們可以在列表框的Name中加一個(gè)前綴“Lst”,以示區(qū)分,如果全過程只有一個(gè)ListBox,那改不改都無所謂。

2、BoundColumn,與ComboBox類似,綁定的列,代表控件實(shí)際的值,在只有一列的情況下,無所謂,如果是多列,可以指定任何一列作為控件的值。

3、ColumnCount,顯示多列時(shí)的列數(shù),默認(rèn)為1。小提示:當(dāng)我們需要顯示多列文本時(shí),可以根據(jù)實(shí)際需要修改這個(gè)屬性的值。

4、ColumnHeads,只有在列表來源是Excel工作表時(shí)才有效,默認(rèn)值為False,這個(gè)屬性從來沒有用過,也沒試過以工作表數(shù)據(jù)作為列表來源。(跟Comobox類似)

5、ColumnWidths,列寬, 在多列的情況下設(shè)置各列的列寬:

.ColumnWidths = "40, 60"

6、IntegralHeight,用來確定控件的大小是否應(yīng)該調(diào)整以確保顯示完整的列表項(xiàng)。小提示:當(dāng)我們看到ListBox最后一項(xiàng)顯示不全時(shí),可以檢查這個(gè)屬性設(shè)置是不是設(shè)置為FALSE,把它改為TRUE。

7、List,列表框的列表,如果增加索引值參數(shù) (從0開始),則指向具體的那一行列表項(xiàng);可以用AddItem方法添加列表項(xiàng)目,或者,我們可以把一個(gè)數(shù)組添加到ListBox的List,這點(diǎn)跟ComboBox類似:

.List=arr.AddItem "A".List(.ListCount - 1, 1) = "A項(xiàng)目"

8、ListCount,列表項(xiàng)目計(jì)數(shù),即有多少個(gè)列表項(xiàng)目。可用于指定最后一條記錄,或者是可以通過ListCount計(jì)算出來的那條記錄。也經(jīng)常用于判斷列表是否為空。

9、ListIndex,用戶選中的第一項(xiàng)的索引,如果沒有選中項(xiàng),則返回-1。小提示:我們需要把點(diǎn)擊的ListBox的某一行賦值給工作表單元格時(shí),我曾經(jīng)使用循環(huán),for i =0 to listbox1.listcount-1,再用if listbox1.selected(i)=true 來確定所選中的行。實(shí)際上不需要那么做,可以直接用ListIndex來引用選中的行:

With ListBox1    For i = 1 To .ColumnCount - 1        Cells(Selection.Row, i + 1) = .List(.ListIndex, i)    NextEnd With

10、ListStyle,設(shè)置列表項(xiàng)在ListBox中的顯示方式:(1)0-fmListStylePlain,以普通文本的形式顯示。(2)1-fmListStyleOption: 每項(xiàng)旁邊都顯示一個(gè)選項(xiàng)按鈕。

11、MultiSelect: 設(shè)置ListBox的選擇模式,單選還是多選,我主要使用單選,多選的情況好像還沒有用過:(1)0-fmMultiSelectSingle,單選。(2)1-fmMultiSelectMulti: 多選,僅用鼠標(biāo)點(diǎn)選。(3)2-fmMultiSelectExtended: 擴(kuò)展多選,鼠標(biāo)結(jié)合Shitf、Ctrl鍵使用。

12、.....。

二、列表框的方法:1、Additem,添加列表項(xiàng)目。

小提示:如果是單列,直接添加item名稱即可,如果是多列,還需要添加其他列的內(nèi)容,與ComboBox類似:

With Me.ListBox2    .Clear    .MultiSelect = fmMultiSelectMulti    .ListStyle = 1    .List = arr    .AddItem "A"    .List(.ListCount - 1, 1) = "A項(xiàng)目"End With2、Clear,清除ListBox 中的所有內(nèi)容,一般在窗體啟動(dòng)后,需要重新添加ListBox的List的時(shí)候,在使用AddItem方法的情況下,為了避免重復(fù)添加列表項(xiàng),需要使用Clear方法清除原有列表項(xiàng),如果是對(duì)整個(gè)List重新使用數(shù)組、字典一次性賦值,可以不用Clear。3、RemoveItem,移除列表項(xiàng),參數(shù)為列表項(xiàng)的索引值,這個(gè)方法沒怎么用過,下面的代碼移除第一個(gè)、最后一個(gè)項(xiàng)目,連續(xù)執(zhí)行,會(huì)移除所有列表項(xiàng)目,相當(dāng)于Clear,添加If判斷列表是否有項(xiàng)目,防止報(bào)錯(cuò):

With Me.ListBox2    '//移除第一個(gè)    If .ListCount > 0 Then        .RemoveItem 0    End If    '//移除最后一個(gè)    If .ListCount > 0 Then        .RemoveItem .ListCount - 1    End IfEnd With4、SetFocus,把焦點(diǎn)移到ListBox。

三、列表框ListBox的事件:1、Click事件,點(diǎn)擊事件,可以取得點(diǎn)擊項(xiàng)目的值,賦值給單元格或其他控件。2、DbClick事件,雙擊事件,與單擊事件一樣,可以取得點(diǎn)擊項(xiàng)目的值,賦值給單元格或其他控件。與單擊的區(qū)別可能就在于,單擊有點(diǎn)快,有時(shí)候我們都不能確定點(diǎn)擊了正確的選項(xiàng),而雙擊,我們可以先點(diǎn)擊一下,看清楚點(diǎn)擊的是哪一行,再雙擊。另外,我們可能會(huì)習(xí)慣性地在列表框中點(diǎn)來點(diǎn)去,但并不是要選擇哪個(gè)項(xiàng)目,這種情況,我們用DbClick事件就比較適合,避免誤點(diǎn)。3、其他事件......。四、總結(jié),

1、ListBox有不少屬性與方法和ComboBox相似,我覺得是不是應(yīng)該ListBox在先,然后才有的ComboBox,或者說我們應(yīng)該先介紹ListBox,然后再介紹ComboBox,這樣可能感覺更順當(dāng)一些;

2、我們通常利用ListBox來展示一個(gè)列表,然后通過Click或DbClick事件取得點(diǎn)擊的項(xiàng)目,賦值給特定工作表單元格,或其他控件。

3、我們?cè)诎袻istBox作為一個(gè)輸入?yún)⒖紩r(shí),經(jīng)常會(huì)頻繁地使用Visible屬性。點(diǎn)擊目標(biāo)單元格,設(shè)置ListBox的visible=TRUE,顯示ListBox控件,在點(diǎn)擊ListBox完成選擇輸入后,設(shè)置Listbox的visible=FALSE,隱藏控件。

4、ListBox功能還算強(qiáng)大,但它也有局限性:

(1)沒有表頭,雖然說可以引用工作表的表頭,但我覺得太雞肋,也從沒有用過。在【中醫(yī)診所收費(fèi)系統(tǒng)ListBox版】中我是把表頭作為第一行記錄添加進(jìn)去的,這樣操作起來比較麻煩,在ListBox點(diǎn)擊事件中,我們首先得判斷點(diǎn)擊的是不是第一行,如果不是,才給其他控件賦值。

(2)列數(shù)有限制,具體多少我也記不清了,懶得去查。還拿【中醫(yī)診所收費(fèi)系統(tǒng)ListBox版】說事,由于數(shù)據(jù)明細(xì)表項(xiàng)目比較多,ListBox已經(jīng)容納不下了,當(dāng)時(shí)也不知道有ListView控件這回事,我只好把有些字段進(jìn)行了合并。后來,很多情況下,我會(huì)使用ListView來展示數(shù)據(jù)。好,今天就這樣,我們下期再會(huì)。~~~~~~End~~~~~~

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多