999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Excel VBA中列表框數(shù)據(jù)的動(dòng)態(tài)填充

2010-12-31 00:00:00
考試周刊 2010年8期

摘 要: 本文基于Microsoft Office Excel應(yīng)用軟件,利用Excel 開放的Visual Basic編輯器,以VBA語言為基礎(chǔ),針對(duì)VBA開發(fā)中列表框數(shù)據(jù)動(dòng)態(tài)填充的問題, 給出了使用Additem方法和使用動(dòng)態(tài)數(shù)組兩種設(shè)計(jì)方法和程序。

關(guān)鍵詞: Excel VBA列表框 動(dòng)態(tài)數(shù)據(jù)填充

作為微軟公司常用辦公軟件Microsoft Office的重要組件之一,Microsoft Excel是一款電子表格處理軟件,它的基本功能是進(jìn)行各種數(shù)據(jù)的處理、統(tǒng)計(jì)分析和輔助決策操作。Excel的應(yīng)用往往不可避免地需要進(jìn)行大量的數(shù)據(jù)錄入,錄入的效率和數(shù)據(jù)的規(guī)范制約著Excel軟件的使用效率,所以在Excel實(shí)際的使用中,經(jīng)常會(huì)借助于使用Visual Basic For Application(VBA)來開發(fā)一些小型的輔助工具完成工作,這樣既可以在一定程度上提高效率,又可以保證數(shù)據(jù)的規(guī)范性。

在使用Excel VBA進(jìn)行的程序開發(fā)中,經(jīng)常會(huì)使用到列表框控件(ComboBox)以提供現(xiàn)有數(shù)據(jù)供用戶選擇。列表框的數(shù)據(jù)填充,可以使用預(yù)定義的方法,即在程序設(shè)計(jì)時(shí)將菜單數(shù)據(jù)固化在控件中,也可以在程序運(yùn)行過程中使用語句進(jìn)行數(shù)據(jù)的動(dòng)態(tài)填充。動(dòng)態(tài)填充主要采用兩種方法:使用列表框本身的Additem方法和使用數(shù)組對(duì)列表框的List屬性進(jìn)行賦值。

1. Additem方法介紹

Additem方法的作用為列表框或組合框添加數(shù)據(jù)項(xiàng)。其語法為:

expression.AddItem(Text,Index)。

expression為必選。該表達(dá)式返回一個(gè)ControlFormat 對(duì)象。

Text參數(shù)為String類型,必選,表示要添加的文字。

Index參數(shù)Variant類型,可選,表示新輸入項(xiàng)的輸入位置。如果列表中數(shù)據(jù)項(xiàng)數(shù)目少于指定索引號(hào),則從列表末尾開始添加多個(gè)空數(shù)據(jù)項(xiàng)到指定索引號(hào)的位置。如果省略該參數(shù),則將此數(shù)據(jù)項(xiàng)添加到現(xiàn)有列表中。

使用Additem方法的范例:

ComboBox1.Additem\"09春直屬工商企\"

上例是為列表框ComboBox1添加一個(gè)新數(shù)據(jù)項(xiàng),“09春直屬工商企”為該數(shù)據(jù)項(xiàng)的文字。新添加的數(shù)據(jù)位于該列表框的最后。

2.Excel VBA中的數(shù)組介紹

Excel VBA中可以聲明一個(gè)數(shù)組來代表一群具有相同數(shù)據(jù)類型的值。數(shù)組是單一類型的變量,它具有很多的隔室來存儲(chǔ)很多值,而常規(guī)的變量只有一個(gè)存儲(chǔ)隔室,所以只能存儲(chǔ)一個(gè)值。

Excel VBA中的數(shù)組分為靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組。

靜態(tài)數(shù)組在聲明時(shí)具有固定大小,在程序運(yùn)行過程中不可對(duì)數(shù)組長度進(jìn)行更改。

動(dòng)態(tài)數(shù)組是指在聲明時(shí)沒有確定數(shù)組大小的數(shù)組,可以在執(zhí)行代碼時(shí)去改變數(shù)組大小。相對(duì)于靜態(tài)數(shù)組,動(dòng)態(tài)數(shù)組在使用中可以根據(jù)程序運(yùn)行需要對(duì)數(shù)組進(jìn)行擴(kuò)展,所以更具有靈活性。在本文中示范的數(shù)據(jù)填充使用的是動(dòng)態(tài)數(shù)組。

動(dòng)態(tài)數(shù)組定義的范例:

Dim ArrayName( )As Single

上例中定義的動(dòng)態(tài)數(shù)組ArrayName,其數(shù)據(jù)類型為Single。除Dim外,也可以使用 Static、Private或Public語句來聲明數(shù)組,并使括號(hào)內(nèi)為空。

在程序運(yùn)行過程中可以使用ReDim語句更改動(dòng)態(tài)數(shù)組,但是做這個(gè)動(dòng)態(tài)數(shù)組時(shí),數(shù)組內(nèi)存在的值會(huì)消失。如果要保留原來的值,則可以使用ReDim Preserve語句來擴(kuò)充數(shù)組。下例語句是將ArrayName( )數(shù)組擴(kuò)充了1個(gè)元素,而原本數(shù)組中的值并沒有消失:

ReDim Preserve ArrayName(UBound(ArrayName)+1)

其中的UBound( )函數(shù)的作用是確定數(shù)組的指定維的最大可用下標(biāo)。

3.基本設(shè)計(jì)

為描述方便,本文使用圖1中的列表框和圖2中的表格數(shù)據(jù)進(jìn)行描述。其中數(shù)據(jù)是從Excel表格中“臨時(shí)表”中的第一列數(shù)據(jù)(圖1),通過動(dòng)態(tài)數(shù)組將其填充到VBA程序中的列表框ComboBox1內(nèi)(圖2)。

4.實(shí)現(xiàn)方法

4.1使用Additem方法進(jìn)行數(shù)據(jù)填充

4.1.1定義索引變量i,用于遍歷表格數(shù)據(jù)。

dim i as integer

4.1.2讀取數(shù)據(jù)并添加到列表框ComboBox1中。其中表格數(shù)據(jù)存放在表格“臨時(shí)表”中的第一列,數(shù)據(jù)從第一行開始,默認(rèn)為遇到空單元格即為數(shù)據(jù)結(jié)束。代碼如下:

With臨時(shí)表′對(duì)表格“臨時(shí)表”進(jìn)行操作

i=1 ′設(shè)置索引變量初始值,使其指向表格中第一行

While.Cells(i,1)<>\"\"′判斷當(dāng)前行第一列單元格是否為空,為空則退出循環(huán)

ComboBox1.Additem.Cells(i,1)′將當(dāng)前行第一列單元格的內(nèi)容填充到ComboBox1中

i=i+1′索引指向下一行

Wend

End With

4.2使用動(dòng)態(tài)數(shù)組進(jìn)行數(shù)據(jù)填充

4.2.1定義存放數(shù)據(jù)的動(dòng)態(tài)數(shù)組temp( )。

Dim temp( )As String

4.2.2定義變量。其中索引變量j為,用于遍歷表格數(shù)據(jù);ArrLength存放的是動(dòng)態(tài)數(shù)組的長度。

dim j,ArrLength as integer

4.2.3讀取數(shù)據(jù)并存入數(shù)組。表格數(shù)據(jù)存放格式與3.1相同。代碼如下:

ArrLength=0 ′記錄動(dòng)態(tài)數(shù)組的長度

With臨時(shí)表′對(duì)表格“臨時(shí)表”進(jìn)行操作

j=1′設(shè)置索引變量初始值,使其指向表格中第一行

While.Cells(j,1)<>\"\" ′判斷當(dāng)前行第一列單元格是否為空,為空則退出循環(huán)

ArrLength=ArrLength+1 ′增加動(dòng)態(tài)數(shù)組長度

ReDim Preserve temp(ArrLength)′以新的長度擴(kuò)展數(shù)組,并保留原有數(shù)據(jù)

temp(ArrLength-1)=Cells(j,1)′將單元格內(nèi)容添加到數(shù)組最后,因?yàn)閂BA中數(shù)組起始索引為0,所以數(shù)組最后 一個(gè)元素的索引應(yīng)是數(shù)組長度-1

j=j+1 ′索引指向下一行

Wend

End With

通過上述代碼,程序?qū)⑺行枰畛淙肓斜砜虻臄?shù)據(jù)全部存入動(dòng)態(tài)數(shù)組temp(圖3)。

4.2.4使用動(dòng)態(tài)數(shù)組數(shù)據(jù)對(duì)列表框進(jìn)行數(shù)據(jù)填充

在數(shù)據(jù)存入動(dòng)態(tài)數(shù)組后,對(duì)列表框的填充就變的簡單了,只需要將數(shù)組temp賦值給列表框ComboBox1的List屬性就可以。代碼如下:

ComboBox1.List=temp

5.需要注意的問題

在對(duì)列表框進(jìn)行數(shù)據(jù)填充的時(shí)候需要注意一些問題。

5.1對(duì)列表框的數(shù)據(jù)填充可清除由ListFillRange 屬性指定的任何區(qū)域。

ListFillRange屬性返回或者設(shè)置用于填充指定列表框的工作表區(qū)域,String類型,可讀寫。對(duì)該屬性進(jìn)行設(shè)置將破壞列表框中的所有列表項(xiàng)。

5.2使用ReDim語句擴(kuò)展動(dòng)態(tài)數(shù)組時(shí)不能拼錯(cuò)數(shù)組名。

動(dòng)態(tài)數(shù)組可以在過程中使用ReDim語句來做數(shù)組擴(kuò)展。當(dāng)使用ReDim語句時(shí)不能拼錯(cuò)數(shù)組的名稱。否則即使在模塊中有包含Option Explicit語句,仍然會(huì)因此而生成第二個(gè)數(shù)組。

5.3對(duì)動(dòng)態(tài)數(shù)組進(jìn)行擴(kuò)展時(shí)需使用Preserve關(guān)鍵字保留原來的數(shù)據(jù)。

對(duì)于過程中的動(dòng)態(tài)數(shù)組的大小,可以使用ReDim語句去改變它的維數(shù),定義元素的數(shù)目以及每個(gè)維數(shù)的底層綁定。每當(dāng)需要時(shí),可以使用ReDim語句去更改動(dòng)態(tài)數(shù)組。然而當(dāng)做這個(gè)動(dòng)作時(shí),數(shù)組中存在的值會(huì)丟失。若要保存數(shù)組中原先的值,則可以使用ReDim Preserve語句來擴(kuò)充數(shù)組。當(dāng)對(duì)動(dòng)態(tài)數(shù)組使用Preserve關(guān)鍵字時(shí),只可以改變最后維數(shù)的上層綁定,而不能改變維數(shù)的數(shù)目。

6.結(jié)語

本文給出了Excel VBA中對(duì)列表框進(jìn)行動(dòng)態(tài)數(shù)據(jù)填充的兩種方法。從比較上看,使用Additem方法進(jìn)行填充,代碼較為簡單,程序流程更加簡潔;而使用動(dòng)態(tài)數(shù)組進(jìn)行填充,雖然在算法上較前者復(fù)雜一些,但是因?yàn)槭褂脭?shù)組進(jìn)行數(shù)據(jù)的中轉(zhuǎn),在填充之前可以對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行較為復(fù)雜的操作,比如數(shù)據(jù)排序等,功能擴(kuò)展更為靈活。我們?cè)趯?shí)際使用中應(yīng)當(dāng)根據(jù)需要選擇合適的方法。

本文范例中的源數(shù)據(jù)是Excel表格中的數(shù)據(jù),其他來源的數(shù)據(jù),例如程序動(dòng)態(tài)計(jì)算的結(jié)果、用戶外部輸入的數(shù)據(jù)等都可以套用該方法。

參考文獻(xiàn):

[1]陳代國,朱志富.基于VBA的EXCEL成績分類統(tǒng)計(jì)[J].辦公自動(dòng)化,2009,(02).

[2]郭海濱.Excel中提高VBA效率的方法研究[J].硅谷,2009,(03).

[3]劉靜.VBA在Excel中的應(yīng)用[J].科技信息,2009,(08).

[4]李生山.淺談VB程序設(shè)計(jì)要素——數(shù)組[J].科技信息,2008,(32).

主站蜘蛛池模板: 97视频精品全国免费观看| 精品一区二区无码av| 18禁黄无遮挡网站| 全部无卡免费的毛片在线看| 国产无套粉嫩白浆| 97se亚洲综合在线| 日韩东京热无码人妻| 波多野结衣中文字幕一区| 视频二区中文无码| 丁香六月激情综合| 天天色天天综合网| 国产精品嫩草影院视频| 亚洲日本中文字幕天堂网| 亚洲黄色激情网站| 精品午夜国产福利观看| 色婷婷在线播放| 欧美激情成人网| 久久久久夜色精品波多野结衣| 国产精品人莉莉成在线播放| 久久久久国色AV免费观看性色| a级毛片免费看| 国产成人高清在线精品| 亚洲男人天堂网址| 成人国产精品一级毛片天堂| 国产一级片网址| 在线观看欧美精品二区| 国产一区亚洲一区| 精品伊人久久久久7777人| 人妻夜夜爽天天爽| 激情亚洲天堂| 热久久这里是精品6免费观看| 日韩免费毛片| 国产网友愉拍精品| 在线播放国产99re| 91精品国产综合久久香蕉922| 亚洲日韩久久综合中文字幕| 色亚洲激情综合精品无码视频| 亚洲成人网在线播放| 国产日韩精品欧美一区灰| 欧美日韩精品在线播放| 99re这里只有国产中文精品国产精品| 日本91视频| 亚洲精品成人7777在线观看| 中字无码精油按摩中出视频| 日日拍夜夜操| 日韩精品成人网页视频在线| 无码中文字幕乱码免费2| 婷婷伊人久久| 操操操综合网| 成人精品区| 亚洲性色永久网址| 蜜桃视频一区| 丰满少妇αⅴ无码区| 国产男女免费完整版视频| 91麻豆国产视频| 视频二区中文无码| 538精品在线观看| 日韩国产黄色网站| 欧美性久久久久| 国产亚洲美日韩AV中文字幕无码成人 | 成人av手机在线观看| 国产精品久线在线观看| 在线观看免费人成视频色快速| 亚洲欧美一区二区三区图片 | 日韩欧美高清视频| 91亚洲影院| 国产国产人在线成免费视频狼人色| 伊人91在线| AV不卡在线永久免费观看| 综合网天天| 精品一区二区三区水蜜桃| 国产精品久久久久久久久| 国产麻豆91网在线看| 欧美在线一二区| 污视频日本| 亚洲an第二区国产精品| 首页亚洲国产丝袜长腿综合| 天天躁夜夜躁狠狠躁图片| 欧美特黄一级大黄录像| 国产99久久亚洲综合精品西瓜tv| 国产精品成人观看视频国产 | 一区二区三区在线不卡免费|